※ ChatGPTを利用し、要約された質問です(原文:エクセルのPrivate Sub Worksheet_Change)
エクセルのPrivate Sub Worksheet_Changeの動作について
このQ&Aのポイント
エクセルのPrivate Sub Worksheet_Changeを利用してセルの変更を検知し、特定のマクロを実行したい場合、エクセルの動作とは異なる動きとなります。
セルB5に入力しエンターキーを押すと、一部のセルの値が変化し、その後印刷ボタンを押すと別のセルの値が変化します。
このような場合、セルB5の入力後にエンターキーで確定して上記のマクロを起動することはできません。
エクセルのPrivate Sub Worksheet_Change
エクセルのPrivate Sub Worksheet_Change
すいません。どうやっても動作しません。
シート1のB5のセルに英数字を入力しエンターを押して確定すると
シート2のC列から同レコードを検出し、その検出された行のB~E列の値を
シート1のH4、H5、H6、J7に値をかえします。
またB5の値はH8にも表示されます。
データがあった場合には、シート1のH4、H5、H6、J7に値が表示されています。
シート2にデータが無い場合はシート1のH4、H5、H6、J7には「#N/A」と表示されます。
ここまでは関数と計算式なのでマクロではありません。
ここでフォームで作成した「印刷ボタン」をクリックします。
すると「印刷ボタン」に登録したマクロが起動します。
シート1のセルG4~J11までが印刷されます。
マクロの内容は
シート1のH4に「#N/A」が表示されている場合はメッセージボックスで
「データがありません」と出ます。印刷は実行されません。
H4が「#N/A」以外の場合は印刷が実行されますがその前に
シート3のセルA1の数値をプラス1してシート3のB2に、セルA1の値の先頭にAを付けて
表示します。(セルA1が0002ならB1はA0002)
それがシート1のH12に表示されます。(H12への表示は計算式で対応)
印刷ボタンを押すごとにシート3のセルA1は1づつ繰り上がります。
シート1のH12の値が変わってから印刷がされます。
と同時に
シート1のセルB5がDELETEされセルB5がアクティブになります。
結果シート1のH4、H5、H6、J7、H8は「#N/A」が表示されます。
H12はクリアされません。
印刷終了後にもセルの値が変化する事になります。
もう一つフォームで作成した「初期化」というボタンがあります。
これをクリックするとマクロが起動して
シート1のセルB5がDELETEされセルB5がアクティブになります。
よってシート1のセルH4、H5、H6、J7、H8も「#N/A」に値が変わります。
ここまでは完璧に動作しています。
でこの「印刷ボタン」を押してマクロが起動ではなく
セルB5に入力しエンターを押したらマクロを起動させたいです。
Private Sub Worksheet_Change(ByVal Target As Range)
を利用しましたが動作しません。
シート1のB5のセルに入力しエンターを押すと
シート1の一部のセルの値が変化。
印刷ボタンを押すと、シート3の一部のセルの値が変化し
その後再びシート1のセルの一部が変化し印刷が開始され
その後シート1のセルB5がDELETEされアクティブに。
それに伴いシート1の一部のセルの値が変化する。
マクロが起動すると、シート1とシート3のセルの値が数回変化します。
このような場合はPrivate Sub Worksheet_Change(ByVal Target As Range)で
セルB5の入力後エンターで確定しての上記のマクロ起動は無理なのでしょうか?
お礼
>application.EnableEvents = False >処理 >application.EnableEvents = True 組み込みましたが、うまくいきませんでした。 デバックモードでもループを確認できました。 またセルB5への入力は自動入力でした。 エンターは押しません。 入力されるとエンターなしで確定です。 (バーコードスキャナ) 発想を変えてB5のセルの値が5ケタ以上になったら このマクロを起動で解決しました。 Changeイベント Call マクロ。