Я пытаюсь перебрать раздел кода, который устанавливает список проверки для определенного набора ячеек как в том же столбце, так и в последующих столбцах. Проблема, с которой я сталкиваюсь, - это «ошибка времени выполнения 1004, определяемая приложением или объектно-определяемая ошибка» в моей строке .ADD, в которой есть мой validatelist, alertStyle ... и т. Д. В моей формуле с моим
Formula1:="=OFFSET($A" & t & "$1,0,0,COUNTA($A" & t & ":$A" & t & "),1)"
Я не уверен, является ли это моей проблемой конкретно или нет. Вот весь мой код. Любое понимание того, что является проблемой или общие улучшения приветствуются.
If Cells(2, 2) = "Some Company Name" Then
t = "O"
For i = 3 To 50
Set CRange = Range(Cells(10, i), Cells(50, i))
Range(Cells(10, i), Cells(50, i)).ClearContents
Range(Cells(10, i), Cells(50, i)).Validation.Delete
Range(Cells(10, i), Cells(50, i)).Value = ""
For Each cell In CRange
With Range(Cells(10, i), Cells(50, i)).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=OFFSET($A" & t & "$1,0,0,COUNTA($A" & t & ":$A" & t & "),1)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = "If the Test name you are looking for is not present please contact a Equipment Handler"
.ShowInput = True
.ShowError = True
End With
Next
t = Chr(Asc(Letter) + 1)
Next i
End If
Так что я немного изменил код, и он все понял. Я думаю, что происходило то, что ошибка происходила из-за прохода мимо столбца AZ. Я случайно установил i to 50
, когда он должен быть ограничен только другой переменной. Кроме того, я испортил t= Chr(Asc(Letter)+1)
Это должно было быть t = Chr(Asc(t) + 1)
Я помещаю свой исправленный код ниже. Спасибо за всю помощь.
If Cells(2, 2) = "Some Company Name" Then
t = "O"
Val1 = Cells(9, 2) + 2
For i = 3 To Val1
Range(Cells(10, i), Cells(50, i)).ClearContents
Range(Cells(10, i), Cells(50, i)).Validation.Delete
Range(Cells(10, i), Cells(50, i)).Value = ""
With Range(Cells(10, i), Cells(50, i)).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=OFFSET($A" & t & "$1,0,0,COUNTA($A" & t & ":$A" & t & "),1)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = "If the Test name you are looking for is not present please contact a Equipment Handler"
.ShowInput = True
.ShowError = True
End With
t = Chr(Asc(t) + 1)
Next i
End If`