我有一個使用 Excel 2010 64 位元儲存的 Excel 工作表。它有一個代碼如下
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 17 Then
Dim iRet As Integer
Dim arr As Variant
If Not IsEmpty(Range("B2").Value2) Then
Exit Sub
End If
'Clear the values in columns
Range("S:AZ").ClearContents
arr = Split(Target, ",")
Range("S15:AZ15").NumberFormat = "@"
Range("S15", Cells(15, UBound(arr) + 19)) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))
Range("AZ1").Value2 = Target
Worksheets("MasterPage").Range("X3:X1000").ClearContents
Worksheets("MasterPage").Range("X3:X1000").NumberFormat = "@"
Worksheets("MasterPage").Range("X3:X" & UBound(arr) + 3) = WorksheetFunction.Transpose(arr)
End If
結束子
如果我嘗試在 Excel 2010 32 位元模式下執行已儲存的文件,它需要執行。任何人都可以提出原因。謝謝
答案1
您的評論表明,要么由於某種原因沒有觸發此特定事件,要么根本沒有觸發任何程式碼(我知道 Excel 有時會默認阻止程式碼執行,因此請注意這一點)
嘗試看看是否有任何程式碼被執行。您可以嘗試將巨集連接到按鈕以明確觸發程式碼,以幫助您確定這是否是問題所在。
答案2
我嘗試了 Excel 2010 32 位,運行沒有問題。
幾個問題:
- 您是否在程式碼中的某個時刻關閉了 Application.EnableEvents ?
- 您提供的程式碼中沒有 End Sub,我假設這是在複製和貼上到 SU 時丟失的,但請仔細檢查。
- worksheet_change 事件上會運行任何內容嗎?
此外,我會對您的程式碼進行一些更改,以幫助其更有效地運行。目前,每次您的程式更改另一個單元格時,它都會再次運行。我添加了幾行來關閉事件觸發器並再次打開它們,以防止事件運行多次。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Row = 1 And Target.Column = 17 Then
Dim iRet As Integer
Dim arr As Variant
If Not IsEmpty(Range("B2").Value2) Then
Application.EnableEvents = True
Exit Sub
End If
'Clear the values in columns
Range("S:AZ").ClearContents
arr = Split(Target, ",")
Range("S15:AZ15").NumberFormat = "@"
Range("S15", Cells(15, UBound(arr) + 19)) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))
Range("AZ1").Value2 = Target
Worksheets("MasterPage").Range("X3:X1000").ClearContents
Worksheets("MasterPage").Range("X3:X1000").NumberFormat = "@"
Worksheets("MasterPage").Range("X3:X" & UBound(arr) + 3) = WorksheetFunction.Transpose(arr)
End If
Application.EnableEvents = True
End Sub