You are here:--[RISOLTO] Select Case
[RISOLTO] Select Case2019-06-13T20:17:05+02:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Select Case

  • Autore
    Articoli
  • AvatarKris_9951
    Partecipante
      Post totali: 84

      Buongiorno a tutti!!!

      Ho un problema con l’istruzione Select Case.

       

      Non capisco perché non funziona…

      Mi è stato insegnato che ogni Case deve essere univoco ed io credo di aver creato tutti Case diversi ed ogni Case ha il suo “set rng =“ però fa i capricci e non vuole funzionare!! :unsure:

      Scusate se non invio un file di esempio ma al momento non ho un PC con connessione internet disponibile quindi ho fatto una foto:

      https://www.dropbox.com/s/kvv8aihy9tivkoo/SelectCase.JPG?dl=0

       

      Grazie a tutti per l’aiuto!

      • Questo argomento è stato modificato 3 giorni, 22 ore fa da sid sid.
    • AvatarKris_9951
      Partecipante
        Post totali: 84

        P.s. vorrei fare in modo di non inserire dei valori uguali nella colonna 1 di ogni tabella del foglio HOME

      • sidsid
        Moderatore
          Post totali: 701

          Ciao
          Il problema non è l’unicità dei vari case, ma è l’impostazione del select case.
          Invece nei case manca l’oggetto della listcolumns(1)

          Questo l’ho fatto al volo dal portatile di un collega

        • AvatarKris_9951
          Partecipante
            Post totali: 84

            Grande Sid come al solito!!

            Ho notato però che se modifico qualsiasi valore di una cella che non fa parte di tutte quelle tabelle si attiva il Debug :-(

          • sidsid
            Moderatore
              Post totali: 701

              Ora nn ho piu il portatile…appena ho modo verifico

            • AvatarKris_9951
              Partecipante
                Post totali: 84

                Ok 👌

                Quando vuoi :-)

                Grazie mille!!!! :good:

              • sidsid
                Moderatore
                  Post totali: 701

                  Prova così

                • AvatarKris_9951
                  Partecipante
                    Post totali: 84

                    Questa volta non si attiva il debug ma neanche il controllo dei doppioni…

                    Forse bisogno ritoccare anche il CountIf?

                    https://www.dropbox.com/s/m2oh2r3569v9sbs/ws_change.JPG?dl=0

                     

                    Grazie mille per il supporto!!!!!

                  • sidsid
                    Moderatore
                      Post totali: 701

                      Questa la macro rivisto; per verificare che il target faccia parte della tabella, ho preferito togliere la gestione dell’errore ed optare per instanziare un oggetto; se alla verifica non risulta Nothing allora il target fa parte di una tabella.
                      E’ preferibile questa soluzione, se esiste un’alternativa alla gestione dell’errore; e poi secondo me è anche più elegante.

                      Private Sub Worksheet_Change(ByVal Target As Range)
                      Dim rng As Range
                      Dim oTab As ListObject
                      
                      Set oTab = Target.ListObject
                      
                      If Not oTab Is Nothing Then
                          Select Case Target.ListObject
                              Case ListObjects("Tabella29")
                                  Set rng = ListObjects("Tabella29").ListColumns(1).DataBodyRange
                          
                              Case ListObjects("Tabella310")
                                  Set rng = ListObjects("Tabella310").ListColumns(1).DataBodyRange
                              
                              Case ListObjects("Tabella411")
                                  Set rng = ListObjects("Tabella411").ListColumns(1).DataBodyRange
                              
                              Case ListObjects("Tabella18")
                                  Set rng = ListObjects("Tabella18").ListColumns(1).DataBodyRange
                              
                              Case ListObjects("Tabella613")
                                  Set rng = ListObjects("Tabella613").ListColumns(1).DataBodyRange
                              
                              Case ListObjects("Tabella121")
                                  Set rng = ListObjects("Tabella121").ListColumns(1).DataBodyRange
                          
                          
                          End Select
                          '********************************************************************
                          'questa istruzione l'ho aggiunta nel caso inserissi un'altra tabella
                          'nel foglio, ma non fa parte dei case
                          If Not rng Is Nothing Then
                          '*******************************************
                              
                              If Not Intersect(Target, rng) Is Nothing Then
                                  If Target.Rows.Count > 1 Then Exit Sub
                                  If WorksheetFunction.CountIf(rng, Target.Value) > 1 Then
                                      MsgBox "Questa nazione è stata già inserita!", vbCritical, "ERRORE!"
                                      Application.EnableEvents = False
                                      Target.ClearContents
                                      Application.EnableEvents = True
                                  End If
                              End If
                          '**********************************
                          'chiusura If della nuova istruzione
                          End If
                          '**********************************
                      End If
                      Set oTab = Nothing
                      Set rng = Nothing
                      End Sub
                    • AvatarKris_9951
                      Partecipante
                        Post totali: 84

                        Grazie mille!!!!!!!!!!

                        Funziona!!!

                        Grande Sid!!!! :yahoo: :yahoo: :yahoo: :yahoo: :yahoo:

                      Devi essere loggato per rispondere a questa discussione.

                      Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                      Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                      Chiudi