ここから本文です

Excel VBA のThisWorkbookシートのコードについて質問です。 Excel2000を使用して...

nao********さん

2011/6/3001:20:24

Excel VBA のThisWorkbookシートのコードについて質問です。
Excel2000を使用しています。

ネットで探して見よう見まねでコードを作成しているのですが・・・

10シートあります。(シートA~シートJ)
シートA以外の残り9シートで共通したコードなので
各シートに書くのは後々の変更も面倒なのでThisWorkbookに記述したのですが動きません。
(共通で処理させたいコードは長いです)
以下のような書き方をしているのですが、該当するセル(ここでいうと、3列目・5/6/7/8/9/10列目)で発動しません。
NGなのでしょうか?

ThisWotkbokシートに記述
----------------------------------------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name="シートA" then Exit Sub

With Target

If .Column=3 then
・・・(3列目が変更された時の処理)・・・
End If

If .Column >= 5 And .Column <= 10
・・・(5列目から10列目がが変更された時の処理)・・・
End If

End With
End sub
----------------------------------------------------------------

閲覧数:
522
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

sio********さん

2011/6/3010:18:27

Workbook_SheetChangeは、「ユーザーまたは外部リンクにより、ワークシートのセルが変更されるときに発生します。」ということなので、質問の場合はイベントが発生していません。

解決策としては、With~End Withまでをサブルーチンにして、それぞれのシートのWorksheet_Activateイベントで実行する
といったことが考えられます。

Private Sub Worksheet_Activate()
test
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

ja7********さん

編集あり2011/6/3007:34:21

> NGなのでしょうか?
この部分のコードだけでは、何とも言えないですね。
質問歴を見てVBAをどの程度習得されているのか、その内容の程度に可也の差があり推測出来ませんが、取敢えず、デバッグの手法を習得されたら如何でしょうか。
たぶん、このコードも ここに提示した部分以外に起因しているのではないでしょうか?
あと、Workbook_SheetChangeやWorksheet_Changeイベントの引数
Targetは、単体セルとは限りませんので、注意が必要です。
このコードの場合、例えば、D1:E1を一度に変更(消去)したとき
If .Column >= 5 And .Column <= 10 Thenの論理式は、Trueになりません。
5列目(E列)が変更になっているのに Then 以下は動作しません。
Ctrl+Aで全セル選択し、Delを押すと対象セルの値が変わっているのに対応するコードは、実行されないことになります。
まぁ、同じようなものですが、このコードでテストするとどうなりますか?

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "シートA" Then Exit Sub
With Target
If .Column = 3 Then
MsgBox "C列を変更"
ElseIf .Column >= 5 And .Column <= 10 Then
MsgBox "E~J列間を変更 "
End If
End With
End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる