单元格值更改的Excel VBA更改编号格式

时间:2014-03-30 22:30:24

标签: excel vba excel-vba

我对一些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    

我是使用目标功能的新手,所以任何建议都会有所帮助。

2 个答案:

答案 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相交时。 如果宏运行并对工作表进行任何更改,则撤消选项将被删除。

希望这有帮助。