/ / Excel jest uszkodzony podczas wypełniania listy rozwijanej za pomocą VBA - excel, vba, excel-vba

Excel jest uszkodzony podczas zapełniania listy rozwijanej przy użyciu VBA - excel, vba, excel-vba

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 № 1

Prawdopodobnie 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.