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?