• ベストアンサー

エクセルのマクロでメッセージを表示させたい

エクセルでセルC2~C10までそれぞれデータを入力します。その時に必須入力項目であるC2とC5が空欄だった場合にメッセージを表示させるマクロを作成したいのですが? マクロは全てのデータ入力が終わった後に「入力確認」というボタンを作ってそこに登録しようかと思っています。 初心者なので他に良い作成方法等があったら教えてください。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.5

× If Worksheets("data").Range("C2").Value = "" Then   Worksheets("data").Range("C2").Select <-------------※ ※このような記述ですと、「コマンドボタン」があるシートが "data" でないと、 つまり、"data" シートがアクティブになっていないとエラーになります。 他のシートを<セレクト>しないで、そのシート内のセルを<セレクト>出来ない ですよね。 出来るだけセレクトしないでコードを記述するといいと思います。 どうしてもセレクトしなければならないのであれば If Worksheets("data").Range("C2").Value = "" Then   Worksheets("data").Select   ActiveSheet.Range("C2").Select でしょうね。

miluke
質問者

お礼

ご回答本当にありがとうございました。思ったとおりのものができあがって大満足です!!

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 3 Or Target.Row > 6 Then If Range("c2") = "" Or Range("c5") = "" Then MsgBox "C2とC5セルに値を入れてください" End If End If End Sub

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

> マクロを作成したいのですが? 使用する人の操作性を考慮すると次のようなコードになるかと思います。 気の使いすぎかな? メッセージを出した後、「要入力セル」がアクティブになります。 Private Sub 入力確認_Click() If Range("C2").Value = "" Then   Range("C2").Select   MsgBox "必須入力項目(セルC2)が、入力されいてません。", _     vbExclamation   Exit Sub ElseIf Range("C5").Value = "" Then   Range("C5").Select   MsgBox "必須入力項目(セルC5)が、入力されいてません。", _     vbExclamation   Exit Sub End If ' ' ここに入力チェック後のコードを記述 ' End Sub  

miluke
質問者

お礼

ありがとうございました。バッチリでした! ただ別のシートをアクティブにさせると エラーがでてしまうのですが、私の記述がおかしいのでしょうか? >If Range("C2").Value = "" Then >  Range("C2").Select   ↓このように変えてみました。 × If Worksheets("data").Range("C2").Value = "" Then   Worksheets("data").Range("C2").Select シートだけ選択してセルを選択しなければ上手くいくのですが。。 ○ If Worksheets("data").Range("C2").Value = "" Then   Worksheets("data").Select

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 必須項目の未入力を知らせる方法なら、条件付き書式を使用してはどうですか。 C2を選択して、メニューの[書式]→[条件付き書式]で、 「数式が」 「=LEN(C2)=0」 として、書式を設定します。(例えばセルの色を赤にするとか。) C5も同様にします。(もちろん上の式の「C2」は「C5」にして下さい。) こうすれば、未入力の場合は設定した書式になります。

miluke
質問者

お礼

ありがとうございました。早速設定してみました。この方法だと必須項目セルが目立っていいですね。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

Private Sub CommandButton1_Click() If Range("c2").Value = "" Then MsgBox ("入ってません") End Sub 上記は C2 の場合です。 これを C10 まで 書けばOKです。 また、簡略化させることも簡単です。 たとえば Range("c2").Value + Range("c3").Value・・・ と 結合して 一つにしてから チェックするとかですね。

miluke
質問者

お礼

ありがとうございました。参考にさせていただきますね。

関連するQ&A

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

    エクセルのマクロについて教えてください。 毎月、データをダウンロードし、VLOOKUP関数などを使って、 必要項目を入れ、ピポットテーブルで合計を出すという 作業をしています。マクロを使ったら、簡単にできるのでは ないかとやってみましたが、マクロで登録しても 毎月集計をするデータの件数が異なるため、 VLOOK関数で入力されるのが、そのマクロで登録したときの ものまでで、残りのセルが空欄になっていたり、 ピポットテーブルの集計は、データの範囲を選びなおしたり しないといけませんでした。 いい方法はないでしょうか。 マクロに作業を記録して、そのシートではなく、 ほかのファイルのシートで 実行する場合は、そのマクロを登録したときのファイル(シート)を 毎回開かなければならないのでしょうか。 基本的なことがわかっていません。 教えてください。

  • エクセルのマクロの組み方

    マクロの初心者です。エクセルのマクロを組んでいるのですが,壁にぶち当たってしまいました。次のようにしたいのですが。 たとえば,A1のセルに「りんご」B1に「割引(1)」C1に「割引(2)」が入っている場合にはD1のセルに200を返す。A1が「りんご」でB1が空欄,C1が「割引(2)」ならD1に230を返す,A1が「みかん」でB1,C1が空欄ならD1に150を返す,のようにいくつかのセルの入力内容によって特定のセル(この場合はD1)に返す値を変えるようなマクロってありますでしょうか。 Selection.Replaceのようなものを使おうと思ったのですが,見当違いでしょうか。 ご指導をお願いします。

  • エクセルで特定のセルに入力後エンターを押すとマクロが起動

    エクセルで特定のセルに入力後エンターを押すとマクロが起動 エクセルで、ファームで作成したボタンを押すとマクロが起動するように して有ります。 記憶させたマクロの起動にはファームで作成したボタンを右クリックし 「マクロの登録」でモジュールを登録する方法しか知りません。 これを特定のセルにデータを入力後エンターを押して入力値が確定されたら このマクロが起動するようにするにはどうすればいいのでしょうか?

  • 空白セルのメッセージボックスでの知らせるマクロ

    はじめまして。下記のExcelについて教えてください。 セルA1からA10の間にデータが入力されているセル、入力されていないセルが混在している場合、データが入力されていないセルをメッセージボックスで知らせるマクロの作成の仕方を教えてください。 空白セルが2つある場合はメッセージボックスは2回表示されます。 ずっと考えていても、分からなくて。。。どうか教えてください。

  • エクセル ボタンへのマクロのやり方

    エクセルを使用して、エクセル内に作成した"ボタン"をクリックすると指定のURLへ飛べるようにしたいのですが、どうやったらいいのでしょうか? 通常セル内に文字を入力してハイパーリンクをやればURLに飛べると思いますが、"ボタン"を付けた場合右クリックをしてもハイパーリンクの文字が出てきません。 マクロを使えば出来ると思うのですが、マクロもホントのホントに初心者なのでよく分かりません。 どなたか詳しく教えて頂けないでしょうか。 よろしくお願いいたします。

  • エクセル マクロについて

    1)マクロでボタンを作成して、Sheet2に自動記載出来るようにしました。Sheet2で記載された文字は行で保護出来ないのでしょうか?シート全体に保護をかけたら、勿論ボタン入力出来なくなりました。 2)マクロのボタンで1回同じ項目をSheet2へ入力した人が、もう一回続けて入力ボタンを押して、Sheet2には同じ文字が入っていました。それを防ぐには何かないのでしょうか?例えば、同じ入力が項目・時間ならメッセージが出てくるとか、1回入力したら”保存されました”などのメッセージがあれば、防げるかな?と思っています。教えてください。

  • エクセルのマクロの組み方に詳しい方

    エクセルのマクロの組み方に詳しい方はいらっしゃいませんか? 今、売り上げの記入を自動化できるようにマクロを組もうと試みています。 しかし、マクロの本を見てもちんぷんかんぷんです 。 頭の中で考えていることですが… まずデータベースとしてエクセル、またはそれに代用できるファイルに手入力で仕入れの詳細を記入していきます。 これは自分で入力していくので問題ありません。 ここからが問題です。 データベースとは別のエクセルにマクロを登録して、データベースから仕入れ情報を検索したいのです。 例えば… A1商品名、A2重量、A3仕入値…というように項目を作っていきます。 そしてB行に検索したい文字、数値を入力します。 そしてボタン1をクリックすると、B 行に入力した値に一致するデータを行ごとD行に呼び出します。 最後にD行の売上の項目に売上を記入して、更新したD行のデータをシート2、又は別のエクセルファイルに張り付けられるようにしたいです。 データの張り付けを文字のあるセルの最後尾の下の空白のセルに張り付けていけるようにしたいです。 どのようなマクロを組むと良いでしょうか?どのような言語を使うと良いでしょうか? 詳しい方是非是非教えて下さい。。

  • Excelマクロで罫線をひきたい。

    Access2000からエクスポートした結果のExcel2000のワークシートに、線をひきたいんです。 一番最初のセルはa1と決まっているけど、一番最後のセルは毎回変わってしまうのですが、 このセルを取得するためにはどんなマクロボタンを作成すればいいでしょうか? ただ本来の希望としては、マクロボタンひとつで、並べ替え>セルの変更>罫線、としたいのですけれど。 「セルの変更」というのは、エクスポートしたデータで「ランク」という項目があり、 これに「特・A・B」という項目があります。 Access上はひとつのフィールドにまとまっているのですが、Excel上では、それぞれ「特・A・B」という列を作成し、データがあったら、「○」を入れるというようにしたいのです。 (列が増えることになります。) また「備考1・備考2」がAccess上にあり、これは別フィールドとなっていますが、 今度はExcel上で「備考」としてひとつの列にしたいのです。 (列の減少) 別シートを作成してもかまいません。 このようなことはできるのでしょうか? せめて罫線だけでもひければ、と思います。 よろしくお願いします。

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

    エクセルのマクロ初心者です。 マクロを使用して印刷プレビューが見れるようにしたいです。 vlookup関数を使いsheet1に入力し、sheet2,sheet3,sheet4、sheet5へデータを反映させています。 sheet1に入力画面を作成してあり、セルA2~A13に入力すればsheet2へ、セルA17~A28はsheet3へ、セルF2~F13はsheet4へ、セルF17~F28はsheet5へデータを反映する作りです。 sheet2~sheet5はフォーマットを作成してあり、印刷するとA4で2枚印刷されるようになっています。 入力画面で入力した内容によってはA4用紙1枚ですむこともあります。(A1~M15でA4用紙一枚、A1~M31でA4用紙2枚) 教えて頂きたいことは。 ・入力画面にマクロのボタンを設置し、ボタンをクリックすると印刷プレビューが表示されるようにしたいです。 ・sheet2用、sheet3用、sheet4用、sheet5用、とボタンを設置したい。 ・印刷プレビュー後に、(実際には印刷後)に入力画面を表示したい。 ・印刷プレビューが見たいのはsheet2,sheet3,sheet4,sheet5です。 以上です。 説明が下手ですみません><

  • excelでマクロシートをコピーしたとき

    excelでbook1のsheet1のセルA1に「1」を入力→プリントアウト→A1に「11」を入力→プリントアウト・・・以下「31」まで繰り返し。 というマクロが組んであります。 (ボタンにマクロが登録されています。) このシートをbook2にコピーをしたときに マクロを実行する(ボタンを押す)とbook1が開いてしまいます。 これをbook1を開かずにbook2でマクロを実行するには どのようにしたらよいでしょうか。 book2でマクロを作成し直して さらにボタンにマクロを登録していますが、 bookの数が多いのでけっこうな手間になります。 簡単な方法があれば教えて下さい。

専門家に質問してみよう