• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2003 特定のセルがブランクの場合)

エクセル2003 特定のセルがブランクの場合

このQ&Aのポイント
  • エクセル2003を使っている会社で、入力したデータを別のシートに転記し、そのシートを印刷するマクロを作成しています。
  • 入力が必須の項目があり、必要な項目が未入力の場合はメッセージボックスでお知らせしたいです。
  • セル番号は結合されていて、入力データの全てが必須ではなく、20項目のうち7項目が必須項目と考えています。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

具体的なフォーマット(様式)が指定されていないので想定ですが。 最下のVBAコードと入れ替えてください。 ■設定及び使用方法 (1)コード内の以下の『'◆チェック対象の設定』箇所を変更してください。  (添付画像の設定ですと以下のようになります。項目は増やせます)  'チェック対象とする範囲を設定   Set myRng = Range("B2:B15")  'チェック行半角カンマ「,」で区切って対象の行番号を設定   myRow = Split("8,9,10,15", ",")  '項目名を半角カンマ「,」で区切って上記チェック行に対応する順番で設定   myTit = Split("氏名,住所,年齢,生年月日", ",") (2)「入力チェック」マクロを実行してください。  チェック対象のセルに未入力があれば、結果がダイアログで表示されます。 ■VBAコード Sub 入力チェック() '◇型宣言 Dim myRng As Range Dim myTit As Variant, myRow As Variant Dim i As Long, cnt As Integer Dim msg As String Dim myTar As Range '◆チェック対象の設定 'チェック範囲 Set myRng = Range("B2:B15") 'チェック行 myRow = Split("8,9,10,15", ",") '項目名 myTit = Split("氏名,住所,年齢,生年月日", ",") '◇チェック処理 '行ループ For i = 1 To myRng.Count   'チェック項目ループ   For j = 0 To UBound(myRow)     'チェック対象且つ、未入力時処理     If myRng(i).Row = CInt(myRow(j)) And Len(myRng(i).Text) = 0 Then       If myTar Is Nothing Then         Set myTar = myRng(i)       Else         msg = msg & vbCrLf         Set myTar = Union(myTar, myRng(i))       End If       msg = msg & "・" & myTit(j)       cnt = cnt + 1     End If   Next j Next i '◇結果表示 If Not myTar Is Nothing Then   myTar.Select   MsgBox "以下の項目が記入されていません。" & vbCrLf & msg, vbOKOnly, "入力必須項目が未記入です" End If End Sub

s1023
質問者

お礼

ありがとうございます。 補足を投稿後、あーでもないこーでもない…としてみました。 「変数の強制を宣言する」のチェックを外して、Option Explicitを削除しましたところできました!!! ありがとうございます。 早速明日、頑張ってみます。

s1023
質問者

補足

ありがとうございます。コピーして貼り付けてみたのですが… 「変数が定義さていません」と「Sub 入力チェック()」の部分が黄色になります。 今は、家のパソコンで「eden3616さま」と同じ表を作って試してみました。 私が何かやらかしているのでしょうか? すいません。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A