Errore nel codice di creazione elenco di convalida dati (formula1)

di il
0 risposte

Errore nel codice di creazione elenco di convalida dati (formula1)

Buongiorno a tutti.

Ho un problema strano, di cui non comprendo la portata.

Ho creato una cartella complessa, con diversi fogli tra loro collegati. Nel foglio principale, ho inserito un elenco di sceltaa discesa in una cella tramite la convalida dati, e funziona bene. La formula per il range dell'elenco è complessa, ma inserendola direttamente tramite il comando nel menu "Dati" , non mi crea problemi.

Quando la vado a modificare tramite codice, però, mi si genera un errore.

Questo è la parte del codice VBA che mi genera l'errore:

            Dim str2 As String, v1 As String, v2 As String, v3 As String, v4 As String
    Set rngSel = Range("A1:AA1")
    With rngSel
        Set rng = .Find(what:="mercato", LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext, MatchCase:=False)
        iCol = rng.Column
    End With
    Set rngSel = Range("A1:A120")
    With rngSel
        Set rng = .Find(what:="-", LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext, MatchCase:=False)
        iK = rng.Row
    End With
    Range("C1").End(xlToRight).Offset(0, 1).Select
    iFine = ActiveCell.Column
    v1 = ConvertToLetter(CLng(iCol))
    v2 = ConvertToLetter(CLng(iCol + 1))
    v3 = ConvertToLetter(CLng(iFine))
    v4 = ConvertToLetter(CLng(iFine + 1))
        [...]
        Sheets("Riassuntivo").Select
        Range("G4:K4").Select
        str = "=SCARTO(filtri!$" & v1 & "$1;2;CONFRONTA($G$5;filtri!$" & v2 & "$1:$" & v4 & _
        "$1;0);CONTA.SE(SCARTO(filtri!$" & v1 & "$1;2;CONFRONTA($G$5;filtri!$" & v2 & "$1:$" & v4 & "$1;0);20);""<>-""))"
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:= str
            .IgnoreBlank = True
            .InCellDropdown = True
            .ShowInput = True
            .ShowError = True
        End With

L'errore (errore di runtime 1004) è nell'istruzione ".add".

Una stampa tramite debug di 'str' dà la seguente stringa:

=SCARTO(filtri!$I$1;2;CONFRONTA($G$5;filtri!$J$1:$O$1;0);CONTA.SE(SCARTO(filtri!$I$1;2;CONFRONTA($G$5;filtri!$J$1:$O$1;0);20);"<>-"))

che non sembra scorretta (inserita direttamente nel comando, non crea problemi)).

Qualcuno sa spiegarmi perché l'istruzione validation dà errore?

Devi accedere o registrarti per scrivere nel forum
0 risposte