2015-10-15 72 views
1

這是我第一次寫代碼,我嘗試寫一個代碼多數民衆贊成在幫助我填列ÇD自動這將發生在我自己填充列AVBA的Excel - 如何自動填寫日期多列,如果我填列A

這是表的我現在它的工作 Worksheet Explaining what i Want

The final result must be like this Picture

我嘗試谷歌代碼的圖片,我發現一個代碼,但在所有

這是不行的是第一個代碼

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim A As Range, B As Range, Inte As Range, r As Range 
Set A = Range("A:A") 
Set Inte = Intersect(A, Target) 
If Inte Is Nothing Then Exit Sub 
Application.EnableEvents = False 
    For Each r In Inte 
     r.Offset(0, 1).Value = Date 
    Next r 
Application.EnableEvents = True 
End Sub 

另外我還嘗試寫另一個代碼,這可能會幫助我填充列BC基於上述代碼的結果,但仍然無法正常工作。

這是代碼由我寫

Private Sub Worksheet_Change1(ByVal Target As Range) 
Dim i As Integer 
For i = 6 To 1000 
If Cells(i, "A").Value <> "" And Cells(i, "B").Value <> "" Then 

    Cells(i, "C").Value = Date 
    Cells(i, "C").NumberFormat = "mmm" 
    Cells(i, "D").Value = Date 
    Cells(i, "D").NumberFormat = "yyyy" 

End If 

Next 

Range("C:C").EntireColumn.AutoFit 
Range("D:D").EntireColumn.AutoFit 

End Sub 

任何人都可以提供幫助的?

+0

切勿將值從[Worksheet_Change](https://msdn.microsoft.com/en-us/library/office/ff839775.aspx)事件宏放入工作表中,而不要先關閉事件處理。在離開子菜單之前重新打開事件處理。 – Jeeped

+0

對不起,我不明白 –

回答

2

當工作表上的一個或多個單元格更改值時,會觸發Worksheet_Change事件宏。如果您在沒有首先關閉事件處理的情況下將值寫入Worksheet_Change過程中的工作表(就像您使用日期一樣),則會觸發另一個Worksheet_Change並且該過程試圖在其本身之上運行。在將值寫入工作表之前,請始終使用Application.EnableEvents = False關閉事件處理。

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("A:B")) Is Nothing Then 
     On Error GoTo bm_Safe_Exit 
     Application.EnableEvents = False 
     Dim rw As Long, rng As Range 
     For Each rng In Intersect(Target, Range("A:B")) 
      If Application.CountA(Cells(rng.Row, "A").Resize(1, 2)) = 2 Then 
       Cells(rng.Row, "C").Resize(1, 2).Value = Date 
       Cells(rng.Row, "C").NumberFormat = "mmmm" 
       Cells(rng.Row, "D").NumberFormat = "yyyy" 
      End If 
     Next rng 
     Range("C:C").EntireColumn.AutoFit 
     Range("D:D").EntireColumn.AutoFit 
    End If 

bm_Safe_Exit: 
    If CBool(Val(Err.Number)) Then _ 
     Debug.Print Err.Number & ": " & Err.Description 
    Application.EnableEvents = True 

End Sub 

記住退出Worksheet_Change過程或未來價值的變化將不會再觸發Worksheet_Change程序之前Application.EnableEvents = True把事件重新打開。

順便說一句,對於正確的數字格式MMMM,不。前者給出完整的月份名稱;後者只有三個字母的縮寫(例如10月)。