• ベストアンサー

エクセルで指定したセルがある条件になると指定したマクロが起動

エクセルで指定したセルがある条件になると指定したマクロが起動 エクセルでシート1のセルB5の値が、文字の種類に限らず、 5ケタ以上になったら指定したマクロを起動させるように 出来ますでしょうか?

  • gx9wx
  • お礼率95% (440/460)

質問者が選んだベストアンサー

  • ベストアンサー
  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.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

gx9wx
質問者

お礼

お世話になります。解決です。 ・シート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ケタ以上の場合マクロ起動」を思いつきました。 教えていただいた方法で達成できました。 ずっといろいろな方法(セルの値が変化、エンターを押したら....) で試しましたがうまくいかず困っていましたので感謝感謝です。

関連するQ&A

  • セルを参照する マクロ? 条件書式?

    セルを参照するマクロまたは条件書式について教えてください。 シートAのセルA1に、ひらがなの【あ】という文字が入力された時 B1セルに入力できる値をシートBのE2からH2を参照 シートAのセルA1に、ひらがなの【い】という文字が入力された時 B1セルに入力できる値をシートBのE3からH3を参照 というのは値のみなら、関数で行えると思いますが 添付画像のようにセルに塗りつぶしがされている際 この塗りつぶしも反映させたいと考えております。 ネットには条件書式でやればという情報はいくつかでていますが あ、い、う にそれぞれ同じ値があるとそれはできないかと思います。 調べたところ、入力規制のリストでは不可能なようなので A1セルに【あ】と入力されていて尚且つB1セルに1と入力されたら オレンジに、2と入力されたら青に・・・ A1セルに【い】と入力されていて尚且つB1セルに1と入力されたら 青に、2と入力されたらオレンジに・・・ のような感じでもよいと考えています。 もちろん指定した範囲内にない文字の場合(例えばB1セルに5を入力)は 塗りつぶしは起こらないでいいです。 マクロなのか条件書式なのかはわからないのですが 上記のようなことができるか教えてください。 ちなみに画像では説明の為 1つのシート内に書いてありますが 実際はシートAとBの2つがあります。 宜しくお願いします。

  • エクセルのマクロのセルの選択について

    エクセルのマクロについて教えてください。 シート上にボタンを作ります。 そのボタンをクリックする前に適当にセルを範囲指定(アクティブ)に しておきます。 セルをアクティブにしたその状態で、ボタンをクリックすると、どこから どこまで範囲指定しているのかわかるようなマクロは作れるでしょうか? (1)たとえばB3からD10まで範囲指定しているときは、B3とD10のセルの場所  をひっぱってくるような... (2)あるいは  cell(?1,?2) ←B3とD10の ?1 と ?2 の値を求めるような... できれば(1)のようなB3とD10のセルの場所が直接わかるようなマクロが現在考えています処理にあっているので、そのほうがいいと思っているのですが.. お忙しいところ申し訳ありませんが宜しくお願い致します。

  • EXCELの条件付け書式からマクロの起動

    あるセルの値が100以上になったとき、音を鳴らしたいと思います。 条件付け書式で、条件が満足したときマクロを起動させ、WAVを鳴らすことできればと考えました。 EXCEL2000を使用していますが、条件付け書式の中に、マクロの起動の項目がありません。EXCELの他のバージョンであれば、可能でしょうか? もし不可能な場合、VBAではできるのでしょうか? FOR ~ NEXTで特定のセルを監視させる無限ループをつくり、マクロを起動するやり方なら想像できるのですが、こと方法だとマシンの負荷が100%になってしまいます。 よろしくお願いします。

  • エクセルのマクロのセルの範囲指定

    エクセルのマクロで、うまくセルの範囲を指定できません。 例えば、 Range(Cells(5.6), Cells(8, 7)) = "AAA" と、指定した時は、F5:G8のセルにAAAという文字を代入するつもりで書いています。 ところが、マクロを実行すると、F1:G8まで、AAAの文字が代入されます。 どうしてでしょうか。 宜しくお願い致します。

  • Excelで文字列セルにて条件式を設定するには

    Excelにて、書式設定が「文字列」のセルに以下の条件を設定するにはどうすればよいでしょうか。 どなたか教えてください。 Excelのマクロ機能を使用して、CSVデータを取り込み、シート上の所定のセルにCSVデータを出力させている既存システムがあるのですが、出力の際に次のような条件を追加したいと考えています。 なお、マクロの修正にて対応できればいいのですが、システムの設定上、マクロをいじることができないため、なんとかシート上で条件式にて対応したいと考えています。 列Bのセルに、隣の列Aの値をみて出力する内容を変えるための条件式を設定したい。 なお、列A,Bともに条件を設定する対象は複数行を想定。ともに書式は文字列。 例) ・A1の値が空欄でないとき、B1には取り込んだCSVデータの値を表示。 ・A2の値が空欄のとき、B2には固定で”あああ”と表示(現行ではA2のデータ元CSVがスペースの場合、B2のデータ元も必ずスペース。よって、A2、B2ともに空欄になっている)。 とりあえず、列BにIF文の条件式を設定してみたのですが、文字列セルのため、設定した条件がそのまま表示されてしまいます。 なにかよい方法はないでしょうか。よろしくお願いします。

  • エクセルでセルに色を付ける(多条件)

    質問を検索していてある程度はわかったのですが、 セルに条件によって色を付けるやり方は条件付書式でできるみたいですが、条件が3つまでしか指定できません。 4つ以上ある場合はどうすればよいでしょうか。 例えば、A1セルにはAからEまでの文字が入力されます。 入力された文字によってB1セルをAなら赤、Bなら青といった具合に違う色を表示させたいのです。 エクセル2000です。 宜しくお願いします。

  • EXCELでこのようなマクロを作りたいです

    EXCELでこのようなマクロを作りたいのですが、 是非作成方法をお教えいただきたく思います。 1.B列を、B1から一番下まで検索 2.ある文字列(完全一致)を発見したとき、そのひとつ上のセル  (B25で発見したら、B24)と同じ内容に置き換える。 3.一番下まで繰り返す。終了条件は、  ・一番下まで行って、検索する値が無くなった時  ・「ある文字列」を発見したとき 以上です。 よろしくお願いいたします。

  • エクセルのマクロをセルの値に応じて自動起動したい

    初心者です。愚問かもしれませんが、よろしくお願いします。 さて、質問です。あるセルに入力された値に応じて、特定のマクロを起動したり、しなかったり、というような関数はないでしょうか? つまりシート内の関数によってマクロを起動できないでしょうか?

  • Excelを2つ起動してセルを参照する方法

    ご質問させていただきます。 Excel2007を2つ起動して、他方のシートのセルを参照したいのです。 具体的に説明いたしますと、1つ目のExcel2007をExcel(1)と呼び、2つ目のExcel2007をExcel(2)と呼ぶことにします。Excel(2)のsheet1のA1セル~A48セルまでcalculateイベントでリアルタイムに変化する値が入っています。それらの値をExcel(1)のsheet2のB1セル~B48セルで参照したいのです。 できるのでしょうか? どなたか教えていただけないでしょうか? よろしくお願いいたします。 もしVBAを使わなくてもできるようでしたら、そちらの方法も教えてください。 よろしくお願いいたします。

  • エクセル 行数指定し一つのセルに改行込で入れる

    日本語が下手でもうしわけないです。 エクセルのマクロにて、行数指定指定したセルを別セルに 改行を含めて入れたいのです。 具体的なやりたいこととしては、 A列に不定期間隔で不定形の文字列が入力されていて、(間は空白) その文字列から文字列の行数を読み、 B列の同じ行数分のセルをひとまとまりとし、 別シートのA1に改行込みで入れる。 次のまとまりはA2に次はA3に… といった動作をさせたいです。 例. 1.A1,A6,A9に文字列があるとする。間は空白 文字列間の行数を読む (1)A1-A5 (2)A6-A8 (3)A9-最終行 2.A列で取得した行数と同じ行数をB列で指定 (1)B1-B5 (2)B6-B8 (3)B9-最終行 3.B列で指定したセルをひとまとまりとして 別シートのA1から順に改行込みで入れる (1)シート2のA1 B1(改行) B2(改行) B3(改行) B4(改行) B5(改行) (2)シート2のA2 B6(改行) B7(改行) B8(改行) (3)シート2のA3 B9(改行) ・ ・ 最終行 ####### マクロでの実現を考えているのですが、 マクロ初心者でさっぱりわかりません。 どなたか、マクロでの記述例を教えて頂けないでしょうか。 また、関数で実現できるのであれば、そちらも教えて頂きたいです。 宜しくお願いします。

専門家に質問してみよう