Установить диапазон переменных в VBA - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть функция, которую я пытаюсь создать, которая в основном очищает выпадающий список, если выпадающий список в предыдущей ячейке был изменен.Мне нужно повторить это для многих строк.в настоящее время он говорит, что моя переменная не определена

Private Sub Worksheet_Change(ByVal Target As Range)

For i = 17 To 1015
If Target.Cells.Count > 1 Then Exit Sub

If Not Intersect(Target, Range("D" & i)) Is Nothing Then
    Range("E" & i).ClearContents
End If


End Sub

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Эта ошибка означает, что вам необходимо объявить переменную i и указать тип, прежде чем вы сможете ее использовать.Вы делаете это Dim i As Long.

Кроме того, вам понадобится Next i, чтобы указать, где заканчивается цикл.

Также проверьте If Target.Cells.Count > 1 Then Exit Sub только один раз (вне цикла).

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub

    Dim i As Long
    For i = 17 To 1015
        If Not Intersect(Target, Range("D" & i)) Is Nothing Then
            Range("E" & i).ClearContents
        End If
    Next i
End Sub

Не проверял, но это должно дать тот же результат:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub

    If Not Intersect(Target, Range("D17:D1015")) Is Nothing Then
        Target.Offset(ColumnOffset:=1).ClearContents
    End If
End Sub

Это должно быть быстрее, потому что не нужно зацикливаться.

0 голосов
/ 21 ноября 2018

Введите следующее чуть ниже Private Sub Worksheet_Change(ByVal Target As Range)

Dim i as long

Вам нужно определить, что я есть, прежде чем вы сможете его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...