繁体   English   中英

在 VBA 中设置变量范围

[英]Set variable range in VBA

我有一个我正在尝试创建的函数,如果更改了前一个单元格中的下拉列表,它基本上会清除选择的下拉列表。 我需要对多行重复此操作。 目前它说我的变量没有定义

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

此错误意味着您需要先声明变量i并指定类型,然后才能使用它。 您可以通过Dim i As Long执行此操作。

此外,您将需要Next i来告诉循环结束的位置。

还要测试If Target.Cells.Count > 1 Then Exit Sub this only一次(在循环外)。

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

这应该更快,因为它不需要循环。

Private Sub Worksheet_Change(ByVal Target As Range)下方键入以下内容

Dim i as long

您需要先定义 i 是什么,然后才能使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM