- ベストアンサー
エクセルのマクロでメッセージを表示させたい
エクセルでセルC2~C10までそれぞれデータを入力します。その時に必須入力項目であるC2とC5が空欄だった場合にメッセージを表示させるマクロを作成したいのですが? マクロは全てのデータ入力が終わった後に「入力確認」というボタンを作ってそこに登録しようかと思っています。 初心者なので他に良い作成方法等があったら教えてください。
- みんなの回答 (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 でしょうね。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
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)
> マクロを作成したいのですが? 使用する人の操作性を考慮すると次のようなコードになるかと思います。 気の使いすぎかな? メッセージを出した後、「要入力セル」がアクティブになります。 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
お礼
ありがとうございました。バッチリでした! ただ別のシートをアクティブにさせると エラーがでてしまうのですが、私の記述がおかしいのでしょうか? >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)
こんにちは。maruru01です。 必須項目の未入力を知らせる方法なら、条件付き書式を使用してはどうですか。 C2を選択して、メニューの[書式]→[条件付き書式]で、 「数式が」 「=LEN(C2)=0」 として、書式を設定します。(例えばセルの色を赤にするとか。) C5も同様にします。(もちろん上の式の「C2」は「C5」にして下さい。) こうすれば、未入力の場合は設定した書式になります。
お礼
ありがとうございました。早速設定してみました。この方法だと必須項目セルが目立っていいですね。
- taknt
- ベストアンサー率19% (1556/7783)
Private Sub CommandButton1_Click() If Range("c2").Value = "" Then MsgBox ("入ってません") End Sub 上記は C2 の場合です。 これを C10 まで 書けばOKです。 また、簡略化させることも簡単です。 たとえば Range("c2").Value + Range("c3").Value・・・ と 結合して 一つにしてから チェックするとかですね。
お礼
ありがとうございました。参考にさせていただきますね。
お礼
ご回答本当にありがとうございました。思ったとおりのものができあがって大満足です!!