[英]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.