You are here:---Rispondi a: [RISOLTO] Select Case
Rispondi a: [RISOLTO] Select Case2019-06-13T15:09:01+02:00

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

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

    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