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