我对一些Excel visual basic有点困难。特别是我想根据单元格的值更改列的格式。这是我到目前为止所拥有的。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("$b$1") Then
If Range("$b$1") = "Date" Then
Range("d:d").NumberFormat = "m/d/yyyy"
ElseIf Range("$b$1") = "Number" Then
Range("d:d").NumberFormat = "#,##0.00"
End If
End If
End Sub
我是使用目标功能的新手,所以任何建议都会有所帮助。
答案 0 :(得分:5)
我认为你不需要使用Target,只需要检查内部的块就足够了。像这样;
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B1") = "Date" Then
Range("D:D").NumberFormat = "m/d/yyyy"
ElseIf Range("B1") = "Number" Then
Range("D:D").NumberFormat = "#,##0.00"
End If
End Sub
然后将B1中的值更改为“日期”或“数字”。
答案 1 :(得分:0)
如果您想知道此代码是否正常工作的特定单元格或单元格范围
If Not Intersect(Target, Range("A1")) Is Nothing Then
<operations>
End If
这将触发&lt;操作&gt;仅当目标范围与范围A1相交时。 如果宏运行并对工作表进行任何更改,则撤消选项将被删除。
希望这有帮助。