まったく同じ VBA コードを使用して大文字を 2 列に強制する Excel 2007 アプリケーションを作成しています。このコードは、8 つの異なるワークシートで使用されます。8 つのワークシートのそれぞれでサブルーチンを呼び出せるように、モジュールにサブルーチンを作成しようとしましたが、機能しません。
各ワークシートの下に次のコードを直接追加すると、機能しました。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TargetRowNumber As Integer
Dim targetColumnNumber As Integer
If (Target.Row >= 6 And Target.Row <= 500) Then
If (Not Intersect(Target, Range("F6:F500")) Is Nothing) Then
If Target.Column = 6 Then
Application.EnableEvents = False
Range("$F" & Target.Row).Value = UCase(Range("$F" & Target.Row).Value)
Application.EnableEvents = True
End If
End If
If (Not Intersect(Target, Range("K6:K500")) Is Nothing) Then
If Target.Column = 11 Then
Application.EnableEvents = False
Range("$K" & Target.Row).Value = UCase(Range("$K" & Target.Row).Value)
Application.EnableEvents = True
End If
End If
end if
end sub
しかし、同じコードでモジュールを作成し、各ワークシートの下でサブルーチンを呼び出そうとすると、次のエラーが発生します。実行時エラー '424': オブジェクトが必要です。
モジュール内のコード:
Sub convert_upper()
Dim TargetRowNumber As Integer
Dim targetColumnNumber As Integer
If (Target.Row >= 6 And Target.Row <= 500) Then
If (Not Intersect(Target, Range("F6:F500")) Is Nothing) Then
If Target.Column = 6 Then
Application.EnableEvents = False
Range("$F" & Target.Row).Value = UCase(Range("$F" & Target.Row).Value)
Application.EnableEvents = True
End If
End If
If (Not Intersect(Target, Range("K6:K500")) Is Nothing) Then
If Target.Column = 11 Then
Application.EnableEvents = False
Range("$K" & Target.Row).Value = UCase(Range("$K" & Target.Row).Value)
Application.EnableEvents = True
End If
End If
End If
End Sub
サブルーチンを呼び出す各ワークシートの下のコード:
Private Sub Worksheet_Change(ByVal Target As Range)
convert_upper
End Sub
VBAでプログラミングするのは初めてです。オンラインで解決策を見つけようとしましたが、成功しませんでした。誰かが私を助けてくれたら本当にありがたいです。
どうもありがとう。