• ベストアンサー

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

エクセルでセル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/17069)
回答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