Ошибка, определенная приложением для формулы списка проверки - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь перебрать раздел кода, который устанавливает список проверки для определенного набора ячеек как в том же столбце, так и в последующих столбцах. Проблема, с которой я сталкиваюсь, - это «ошибка времени выполнения 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`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...