Excel 2010 32 位元模式中的 VBA 宏

Excel 2010 32 位元模式中的 VBA 宏

我有一個使用 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 位,運行沒有問題。

幾個問題:

  1. 您是否在程式碼中的某個時刻關閉了 Application.EnableEvents ?
  2. 您提供的程式碼中沒有 End Sub,我假設這是在複製和貼上到 SU 時丟失的,但請仔細檢查。
  3. 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

相關內容