- ベストアンサー
エクセルで指定したセルがある条件になると指定したマクロが起動
エクセルで指定したセルがある条件になると指定したマクロが起動 エクセルでシート1のセルB5の値が、文字の種類に限らず、 5ケタ以上になったら指定したマクロを起動させるように 出来ますでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
B5セルに5文字以上が入力された場合に起動させるのであれば、次のようになります。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$5" And Len(Range("B5").Value) > 4 Then Call 実行するマクロ End If End Sub
お礼
お世話になります。解決です。 ・シート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のセルあちこちの値が変化する。 もう一つフォームで作成した「初期化」というボタンがあります。 これをクリックするとマクロが起動して シート1のセルB5がDELETEされセルB5がアクティブ。 よってシート1のセルH4、H5、H6、J7、H8も「#N/A」に値が変わります。 ここまでは完璧に動作しています。 でこの「印刷ボタン」を押してマクロが起動を廃止し イベントチェンジを利用してマクロを起動させたく Private Sub Worksheet_Change(ByVal Target As Range) を利用しましたが動作しません。 マクロが起動するとセルのあちこちが変化するので application.EnableEvents = False application.EnableEvents = True も組み込みましたがうまくいきません。 Private Sub Worksheet_Change(ByVal Target As Range)を入れたら 別マクロの初期化ボタンの方もエラーになってしまいました。 B5のセルの値はマクロ起動中にも値が変化しますが空白か5~14ケタである事から、 質問した方法「セルB5が5ケタ以上の場合マクロ起動」を思いつきました。 教えていただいた方法で達成できました。 ずっといろいろな方法(セルの値が変化、エンターを押したら....) で試しましたがうまくいかず困っていましたので感謝感謝です。