我希望双击特定的单元格,如果该单元格在第一列,并且行大于12,则该单元格将起作用。
iptables
但是我提到的条件似乎不正确。 cuz代码在没有此条件的情况下正常工作。
答案 0 :(得分:2)
补充@BigBen的答案...
Range.Columns
返回一个Range
,代表指定范围内的列(此处为Target
)。通过检查If Target.Columns = 1
,您将对返回的Range
对象(即If Target.Columns.[_Defaut] = 1
)进行隐式默认成员调用,即产生Target.Columns.Value
,它是2D变量数组-可以不能与1
文字进行比较。
因此,您得到的错误是类型不匹配错误,因为VBA无法将2D变量数组与整数文字进行比较并成功评估结果。
您想要Range.Column
(单数),它返回指定Range
中最左侧单元格的列号。
答案 1 :(得分:1)
答案 2 :(得分:1)
由于我无法评论@Mathieu的答案(信誉尚不充分),因此您还应该检查是否只选择了一个单元格。在发生双击事件的情况下,此功能可能没有多大用处,但是有时您会将此代码重用于另一种意图(可能是对Worksheet_SelectionChange
事件的重用),此时该事件可以由多项选择。在这种情况下,“列”值将返回最左边的列。如果它符合.Column =1
条件,则所有选择都将填充日期,如果您丢失表中的数据,日期可能会令人沮丧。
因此,请记住只需将And Target.Count = 1
添加到您的If
语句中。
PS:强制将VBA IDE强制为explicit variable declaration是一种很好的做法,令我惊讶的是Mathieu并未指出这一点。另外,也不需要使用dateVariable
变量。只需使用Target = CalendarForm.GetDate
或什至更好:Target.Value = CalendarForm.GetDate