• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで保存時に空白セルをチェックしたい)

エクセルで空白セルをチェックする方法

このQ&Aのポイント
  • エクセル2010で、複数のシートの特定のセルが空白の場合にアラームを表示するマクロの修正方法を教えてください。
  • 別のBookにおいて、入力シートだけをチェックするようなマクロに修正したいのです。
  • 先日教えてもらったコードでは、入力シート以外のシートにも何か入力してしまうとエラーメッセージが表示されてしまいます。

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

  • ベストアンサー
回答No.1

> Activeシートだけチェックするようなマクロにしたい Activeシートだけチェックするようなマクロにしたらいいです。 Private Sub Workbook_BeforeClose(Cancel As Boolean)   If ActiveSheets.Range("A1").Value = "" Then     MsgBox "A1が未入力!", vbCritical + vbOKOnly, "確認"     Cancel = True     Exit Sub   End If End Sub そもそも、どの行がどんな処理をするか理解していないでしょ? それが理解できているなら、この程度の改編はごく簡単なはずですもん。 で、おそらくですが「アクティブシートのみチェック」では あとあと不具合が出ると想定しておいた方が良いですよ。 ま、老婆心ですのでお気になさらず。 ほんとにいつも思うのですが、解らないものは使わない方が良いですよ? 仮に「全シートからデータを消去する」マクロを提示されたらどうします? 言ってしまえば、PCそのものに影響を与えるマクロもVBAで組めたりします。 そんな(私のような)悪意を持ったユーザーがいるかもしれませんよ? 教えてもらうのは悪いことじゃないですが、 教えてもらったら理解する努力をしないと先に進めませんからね。

akira0723
質問者

お礼

いつも的確なご回答ありがとうございます。

akira0723
質問者

補足

仰る通りで、全く意味が分からない場合は諦めます。 書いてもらったコードの意味は何となく分かるのですが、自分で書くと動かない場合が殆どです。 恥ずかしながら、たまには自分で変更したマクロも動くことも有ります(言うほどのこともないですが) 今回の場合は「Count」がいたるところに入っており、これはシートの数を数えているので不要、対象範囲はActiveSheetのA1程度は分かるのですが、自分で書いてみると動かなかったので。 ご指摘&ご回答ありがとうございます。

その他の回答 (2)

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

>未入力の書式シート は「未入力のシート」のことだとして、1部のセルに VBAではセルに関して、データは、Valueで、書式はNumberFormatなどです。 項目見出しなどが前もって入力されている場合は、セルの場所で判別するしかないかもしれない。ある場合には、該当データがなく空白にせざるを得ない場合もあろう。データが人間なら、見て内容ですぐ判別できようが、プログラムではそうもいかない。 入力済みのシートと、全く入力(多分データの入力か)してないシートの判別はどう判別させればよいのか。VBAコードでなく(どのセルに関して、およびデータについて)文章を使って説明しないと質問にならないのではないか。 それをプログラム化して、対象外のシートはチェックしないようにするとよいのでは。

akira0723
質問者

お礼

ありがとうございます。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

アクティブなシートだけをチェックするのであれば、 既に回答されていますし、その答えで無論、十分なんですが... また、先刻承知かもしれませんが、一言。 空の入力用シートが10枚あって、 3枚目まで入力済み。 4枚目を入力して、 4枚目が選択された(アクティブな)状態のまま 保存のオペレーションをしてくれれば期待のチェックが機能します。 他方、 4枚目を入力し、3枚目を選択してから 保存のオペレーションをした場合には 期待のチェックが機能しません。 例えば、 入力者が新規で入力するときに 常識的に考えて、必ず埋めるセルがあるのであれば、 そのセルが埋まっていて、かつ、A1セルも埋まっているかというチェックを 全てのシートで行うというのはどうでしょうか。

akira0723
質問者

お礼

ご丁寧な回答ありがとうございます。 恐らくご提案のコードは当方には持ち腐れになってしまうと思いますので、上記の背景もあり、簡単な安全マクロで対処したいと思います。

akira0723
質問者

補足

毎度まいどお世話になります。 ご指摘の懸念には気付いており、 当然入力すべきセルがあるので、そのセルが埋まっていて、かつ、A1セルも埋まっているかというチェックを全てのシートで行う、のが理想ですが、既にお気づきのように当方には無理との判断から、保存時に最新の入力シートでの保存することをルールにするつもりです。 というより実作業としては入力後、計算結果を記録したらそのまま保存する手順になっているので大きな問題(抜け)にはなりません。 大きな表に入力した生データー(計算に使用した値)を各シートに記録として残しているだけで過去の入力表を再利用することは無いので簡単な方法で対処しようかと。 また、最悪チェック漏れが発生した場合でも、今の調査作業(過去のデータを引っ張り出す)をすることになるだけで今以上のリスクは無いと考えています。