2014-03-30 250 views
1

我在使用某些Excel visual basic時遇到了一些困難。特別是我想根據單元格的值更改列的格式。這是迄今爲止我所擁有的。Excel VBA更改單元格值更改的數字格式

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  

我是使用目標功能的新手,所以任何建議都會有所幫助。

回答

5

我不認爲你需要使用目標,只是該檢查內的塊應該足夠。喜歡這個;

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中的值更改爲「日期」或「數字」。

+0

謝謝你的迴應!它終於奏效了! – user3479230

+0

@ user3479230好的,沒問題 – coni2k

0

如果您想告訴我們,如果細胞的特定的單元格或區域這個代碼工作

If Not Intersect(Target, Range("A1")) Is Nothing Then 
    <operations> 
End If 

這將觸發<操作>僅在目標區域相交範圍A1。 如果宏運行並對工作表進行了任何更改,則撤消選項將被清除。

希望這會有所幫助。