🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

665閲覧

VBAのworkBookeventについて質問です。

yo_si

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2021/02/09 07:06

前提・実現したいこと

Sheet1の指定行の指定セルの値が1に変わったときに、別シートの指定列に列を挿入したいです。
条件としては、列を挿入するごとに列がずれるのでOffset(0,-1)?を使って常にE2セルにある値「平均」を基準に左横の列に列を挿入したいです。

発生している問題・エラーメッセージ

特にエラー無しだが、コードが実行されない。

該当のソースコード

VBA

1Private Sub Workbook_sheetChange(ByVal Target As Range) 2 If (Target.Row Mod 6 = 0 Or Target.Row Mod 3 = 0) And Target.Value = "1" Then 3 'セルの値に変更があったときに実行したい処理を記述 4 i = 1 5 Do 6 If Worksheets("2A").Cells(2, i).Value = "平均" Then 7 Worksheets("2A").Cells(2, i).Activate 8 Worksheets("2A").Cells(2, i).Offset(0, -1).Insert 9 End If 10 i = i + 1 11 Loop Until Worksheets("2A").Cells(2, i).Value = "平均" 12 13 14 15 End If 16End Sub

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Workbook_sheetChange とWorksheet_Changeの違いのサイトがありますので
参考にしてください
例1:Sheet1のセルのA1からC30までの範囲のセルに値に変更があった場合にメッセージボックス(MsgBox)を表示する。
例3:Sheet1とSheet3のA1からC10までのセルの値に変更があったときにプログラムを実行
https://selifelog.com/blog-entry-224.html

投稿2021/02/10 08:18

syousuke.33

総合スコア312

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

WorkBookではなくWorksheetのイベント
Sheet1 のコードとして、以下の通り書けば意図通り動くと思われます。

VBA

1Private Sub Worksheet_Change(ByVal Target As Range) 2'略 3End Sub

投稿2021/02/09 07:17

jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問