Private Sub Workbook_Open()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Dim iRow As Long
For iRow = 2 To LastRow
AddListValidation ws.Cells(iRow, "C"), ws.Cells(iRow, "B")
Next iRow
End Sub
Sub AddListValidation(cellSource As Range, cellTarget As Range)
cellTarget.Value = "Select your values here"
With cellTarget.Validation
.Delete
.Add Type:=xlValidateList, Formula1:=cellSource.Value
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Po raz pierwszy lista rozwijana jest wypełniana. Kiedy dokonuję pewnych zmian na arkuszu i kiedy ponownie otwieram arkusz, jego stwierdzenie, że jest uszkodzone i nie otrzymuję również listy rozwijanej.
czy ktoś może mi pomóc pls?
Formuła, której użyłem, jest poprawna, czy nie?
.Add Type:=xlValidateList, Formula1:=cellSource.Value
Odpowiedzi:
0 dla odpowiedzi № 1Prawdopodobnie cellSource
jest pusty i dlatego daje błąd Formula1
, który próbuje uzyskać swoją wartość.
Wpisz swój kod po Sub AddListValidation
ta linia:
If Len(cellSource) Then Exit Sub
Tak więc wyjdzie, jeśli cellSource
jest pusty i uniknie błędu.