• ベストアンサー

エクセルで未入力セルを警告する方法

A1~A20列にデータを入力していくのですが、セルに値のの入力が無い場合にそのセルの番地(?)を、メッセージBOXで「A**」にデータが入力されていません」というように、警告するようにしたいのですが、入力されていないセルの番地を取得するにはどうしたらよいでしょうか?

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

> マクロ実行時にメッセージを出す方法を考えておりました。 merlionXXです。 それなら標準モジュールに以下のように記述してください。 Sub Sample() On Error GoTo line myAdr = Sheets("Sheet1").Range("A1:A20").SpecialCells(xlCellTypeBlanks).Address(0, 0) MsgBox myAdr & " に入力がありません!", vbCritical line: End Sub

maximum_
質問者

お礼

何度もありがとうございます。 VBAも奥が深いようで、頑張って覚えていこうと思います。 参考にさせていただいて、頑張ってみようと思います。

その他の回答 (5)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

どのシートのA1~A20でしょうか? どのタイミングでメッセージをだすのでしょうか? ご記入がないのでSheet1のA1~A20のどれかが空白のまま終了しようとした場合に警告を出すようにします。 VBEでThisWorkbookモジュールに以下をコピペしてみてください。 Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error GoTo line myAdr = Sheets("Sheet1").Range("A1:A20").SpecialCells(xlCellTypeBlanks).Address(0, 0) Cancel = True MsgBox myAdr & " に入力がありません!", vbCritical line: End Sub

maximum_
質問者

お礼

回答ありがとうございます。 質問内容にかなり不備が有り申し訳ありません。 マクロ実行時にメッセージを出す方法を考えておりました。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

こんな感じ? Sub test() Dim Rng As Range Dim NoData As String For Each Rng In Range("a1:a20") If Rng.Value = "" Then If NoData = "" Then NoData = Rng.Address(0, 0) Else NoData = NoData & "," & Rng.Address(0, 0) End If End If Next If NoData = "" Then Exit Sub MsgBox NoData & "にデータが入力されていません" End Sub

maximum_
質問者

お礼

回答ありがとうございます。 凄く参考になりました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 空白セル番地を取得したいって事なのですね? VBAだと出来そうな感じですが・・・ちょっと判りません。 セル番地取得までは行きませんが、 B1セルに =IF(COUNTIF(A1:A20,"")>0,"未入力セルが"&COUNTIF(A1:A20,"")&"箇所あります","") としてみてはどうでしょうか? なんか無理矢理って感じですが、 この程度の回答でごめんなさい。m(__)m

maximum_
質問者

お礼

セルに書式入れる方法ですね。 今回は使えないのですが、回答ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 私もNo.1さんの回答のように条件付書式を使えばいいと思いました。 A1~A20を範囲指定 → 書式 → 条件付書式 → セル値が 次の値に等しい として =""  と入力 → 書式 → パターンから塗りつぶしの色を選択してはどうでしょうか? 空白セルのみ色がつくはずです。 当方使用のExcel2003での回答でした。 以上、参考になれば幸いです。m(__)m

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.1

A1~A20に条件付き書式を設定 数式が A1="" 書式に塗りつぶしの色を設定 空白の時、塗りつぶしの色をつける。入力されると色が消える すなわち、入力されていないセルには色が付いている。

maximum_
質問者

お礼

素早いお返事ありがとうございます。 そう言う方法もあるのですねぇ今後の参考にさせていただきます。 今回は、メッセージを表示させたいという考えがあるので...

関連するQ&A

  • テキストボックスのセルへの入力について

    初めて利用します。どうしても分からず利用します。 よろしくお願いいたします。 A2セルにMATCH関数にて取得したセル番地が表示されています。 ユーザーフォームのテキストボックスの値をA2セルに表示されたセル番地へ 入力するにはどうしたら良いでしょうか。 ご回答よろしくお願いいたします。

  • Eecelで指定されたセル番地に入力される方法を教えてください

      A  B  C  D  E 1    A1  1 2    A2  2 3    A3  3 4    A4  4 上記のようなシートがあったとします。 B列にセル番地が入力されており、C列には数値が入力されています。 A1にC1の値=1 A2にC2の値=2 という具合に、 B列に入力されているセル番地に隣のC列の値が入力されるようにしたいのですが、どうもうまくいきません。 いい方法があったら教えてください。よろしくお願いします。 ※できれば関数で何とかしたいと思っています。 OS:Windows XP Excel2003です。

  • 入力したセル番地をメッセージボックスで表示する方法

    Excelでメッセージボックスの使い方についてお聞きします。 下記のコードを実行します。その時、メッセージボックス上に入力したセル番地(A1)、「こんにちは」という語句をそれぞれ表示させるにはどのような方法があるのでしょうか。 宜しくお願いします。 Range("A1").Value = "こんにちは"

  • エクセルの結合したセル

    こんにちわ。 上下に結合したセルがAの列に並んでいます。A1、2で一つ、A2、3で一つというふうに。 そこに日付が入っています。 Bの列も同様にあり、そこには文字列が入っています。 それらを一つのセルにまとめたものを別のシートに作ろうと思いました。 文字列と日付なので&とTEXTを使い、うまくいったのですが、一番上を合わせて、下へスライドコピーしたらデータが飛び飛びになってしまいました。 結合した場合番地が上のセルの番地になります。A1,2なら番地はA1。 なのでA2には何も数値がないので、空白扱いとなってしまいました。 データ量が多いので、できればスライドさせて一気にやりたいのですが、なにかいい方法はありませんでしょうか? 難解な文章で申し訳ありません。。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • エクセルでObjectがあるセル番地を取得するマクロは?

    エクセルのワークシート上にフォームのチェックボックスが多数配置されています。そのチェックボックスのTOPにあたる位置がセル番地で言えばどこになるのかを取得する方法はないでしょうか? TOP位置は以下のようにチェックボックスに登録したマクロで簡単に取得できるのですが・・・。 セル番地を取得して、やりたいことは、そのセルの右隣のセルの値を取得することです。もし、そのセルの右隣のセルの値を簡単に取得できるなら別にTOP位置のセル番地が取得できなくともかまいません。 Sub test01() MsgBox ActiveSheet.CheckBoxes(Application.Caller).Top End Sub

  • エクセルで、あるセルに入力されたらこのセルを参照する…

    B1セルに値が入力されたら、A1セルがC1セル(データ入力済)の値を参照する、 ような数式を教えてください. またこのような数式がたくさんあるサイトでオススメを教えてください.

  • excelで○○と入力されているセル番地を返す方法

    excelについて質問です。 シートAに下記の記述をします。    A    B 1 項目名 セル番地 2 ○○  B7 のような形で、シートBからセル番地を引っ張ってくる方法はありますでしょうか。 セル番地が難しいようであれば、行、列を返す形でもよいです。 上手く質問ができず、申し訳ありません。 できればVBAは使わず、関数で処理できるとベターです。 宜しくお願いいたします。

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • 複数行列のセル範囲から検索する方法

    Excel2003を使っています。 A1:Z80のセル範囲から指定した値を検索し、その値の番地を取得する方法を教えてほしいです。 重複する値は入力されていませんが、空白セルもあります。 他のシートの任意のセルに検索したい値を入力し、見つけた番地にたいするリンクを設定したいのです。 VBAでも関数でもいいので、力を貸して下さい。

専門家に質問してみよう