Login Registrati
Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #34931 Score: 0 | Risposta

    Rosaria

      Salve,

      ho usato l'istruzione Select Case e adesso vorrei aggiungere un'altra richiesta:

      "se quella condizione si presenta si presenta x volte allora scrivi x"

      In particolare "se selezioni una determinata cella x volte allora scrivi in un'altra cella x"

      Vorrei sapere solo come concatenare select case con quest'if oppure se esiste un altro modo.

      Grazie.

       

      #34933 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        Ah bè questo è un quesito diverso dal solito 🙂

        Chiarisci cosa intendi con "se selezioni una determinata cella". Lo deve fare l'utente? lo fa la macro via codice spostando la cella attiva?

        In ogni caso è possibile "concatenare" (rectius: annidare) più costrutti Select Case, proprio come fai con If.

        Fai vedere uno spezzone di codice così chiariamo il problema.

        Se puoi, definisci meglio il problema specifico altrimenti restiamo nella didattica e forse ti serve poco (perchè ogni problema può avere più soluzioni e invece di cercare la soluzione più adatta investiamo post a parlare di teoria).

        Il massimo sarebbe avere un file di esempio su cui ragionare, anche per avere lo scenario d'uso sottomano.

        #34935 Score: 0 | Risposta

        Rosaria
          Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          
          Select Case Cell
          Case B2
          MsgBox "ciao"
          
          Case B3
          
          MsgBox "arrivederci"
          
          
          Exit Sub
          End Select
          end sub

          Ed io vorrei dire che se la condizione Case B2 si presenta x volte voglio scrivere "ciao x" con x variabile.

          Sì, la selezione della cella deve farla l'utente.

          Edit by VF: ho formattato la parte di codice con l'apposito pulsante ("codice VBA")

          #34937 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Bene, allora direi che puoi tenere il conto di quante volte l'utente scrive "ciao" modificando una cella nascosta (o lontana nel foglio in modo che non sia visibile), facendo sì che funga da contatore. Al raggiungimento della condizione ci fai quello che vuoi.

            Lo schema sarebbe una cosa simile:

            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                if target = "ciao" then range("contatore") = range("contatore") + 1
                if range("contatore") = 10 then msgbox "Ciao ": range("contatore") = 0
            end sub

            Non testato 🙂 anche perchè ancora non ho capito lo scopo.

            Purtroppo adesso devo chiudere, ma tu continua a postare che poi quando posso leggo tutto.

            #34944 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              272 pts

              Leggendo meglio, però, adesso capisco una cosa diversa da quella che ho scritto.

              Tu non devi scrivere un testo in una cella e intercettare quante volte l'utente scrive questo testo. Tu vuoi intercettare ogni volta che l'utente clicca su una cella e quando si arriva a dieci (poniamo) scatta il trigger.

              Private Sub Worksheet_SelectionChange(ByVal Target As Range)
              Static i As Integer
                  If Target.Address = Range("B2").Address Then i = i + 1: Range("B2") = i
                  If i = 10 Then MsgBox "Hai cliccato dieci volte in cella B2!": Range("B2") = 0: i = 0
              End Sub

              Edit by VF: il trigger scatta ogni volta che arrivi alla cella B2, sia che ci clicchi col mouse sia che ci passi con la tastiera. Se hai bisogno di qualcosa di diverso, esponi meglio il problema e magari allega uno scenario su cui lavorare.

              #34950 Score: 0 | Risposta

              tanimon
              Partecipante
                16 pts

                ciao a tutti   

                molto simile a quella di vecchio frac, questa la mia versione

                Frank

                allego file

                 

                Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                Dim sh As Worksheet
                Set sh = Sheets("Foglio1")
                
                With sh
                    Select Case Target.Address
                    
                        Case Is = "$B$2"
                            Range("b2").Value = Range("b2").Value + 1
                            
                            '================================
                            ' arriva fino a 3 click
                            '================================
                            If Range("b2").Value <= 2 Then
                                MsgBox "ciao"
                            Else
                                MsgBox "ciao, hai cliccato    " & Range("b2").Value & "   volte sulla cella B2"
                                Exit Sub
                            End If
                            
                        
                        Case Is = "$B$3"
                            MsgBox "arrivederci"
                        
                        End Select
                
                End With
                
                Set sh = Nothing
                
                End Sub
                

                 

                Allegati:
                You must be logged in to view attached files.
                #34952 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  tanimon ha scritto:

                  questa la mia versione

                  Premesso che cosi è ok, i riferimenti al foglio con la variabile "sh" non sono utilizzati nel codice mostrato, e quindi si possono omettere (il risparmio di memoria e risorse è irrisorio, ma così facciamo anche formazione :P).

                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: select case
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: