You are here:Home-Domande su Excel VBA e MACRO-[RISOLTO] Select Case
[RISOLTO] Select Case2019-06-13T20:17:05+02:00

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

Visualizzazione 9 filoni di risposte
  • Autore
    Post
    • AvatarKris_9951
      Partecipante
        Post totali: 158

        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 topic è stato modificato 1 anno, 1 mese fa da sidsid.
      • AvatarKris_9951
        Partecipante
          Post totali: 158

          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: 750

            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: 158

              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: 750

                Ora nn ho piu il portatile…appena ho modo verifico

              • AvatarKris_9951
                Partecipante
                  Post totali: 158

                  Ok 👌

                  Quando vuoi :-)

                  Grazie mille!!!! :good:

                • sidsid
                  Moderatore
                    Post totali: 750

                    Prova così

                  • AvatarKris_9951
                    Partecipante
                      Post totali: 158

                      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: 750

                        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: 158

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

                          Funziona!!!

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

                      Visualizzazione 9 filoni di risposte
                      • Devi essere connesso per rispondere a questo topic.