会社でエクセル2003を使っています。
縦にデータを入力する表を作りました。
(1)氏名 (2)〒 (3)住所 (4)電話番号 (5)生年月日 (6)性別・・・など20項目を入力します。
入力完了後、別シートにデータを転記してそちらの別シートを印刷するというマクロを作りました。
例えば、その中で入力を絶対してほしい項目がありまして、それを忘れていたらメッセージボックスで「○○が未入力です」とお知らせしたいと思ってます。
いろんなサイトで調べてみたのですが…うまくいかなくて…
例文に従って作ってみたのが
Sub 円楕円4_Click()
Dim Lesson16 As Range
Dim 会員名簿 As Worksheet
If 会員名簿.Range("A8") = "" Then
MsgBox "氏名が記入されていません。"
会員名簿.Range("A8").Select
Exit Sub
ElseIf 会員名簿.Range("A9") = "" Then
MsgBox "住所が記入されていません。"
会員名簿.Range("A9").Select
Exit Sub
ElseIf 会員名簿.Range("A10") = "" Then
MsgBox "年齢が記入されていません。 "
会員名簿.Range("A10").Select
Exit Sub
ElseIf 会員名簿.Range("A15") = "" Then
MsgBox "生年月日が記入されていません。"
会員名簿.Range("A15").Select
Exit Sub
ThisWorkbook.SaveAs Lesson16
End Sub です。
家で作ったサンプルなので、セル番号もちょっと???なのですがお許しください。
入力するデータの全てが必須入力項目ではなくて、20項目のうち7項目が必須項目と考えています。
この項目が未入力であれば「未入力ですよ」とお知らせしたいのです。
また、上の例文のセル番号は単独ですが、会社のファイルのセルは結合しています。
(たとえばA8:C8、A15:G15)と行によって結合範囲も違います。
ど素人の質問で、わかりにくいとは思いますが
なにとぞ、アドバイスいただきますようよろしくお願いします。
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
この回答への補足
ありがとうございます。コピーして貼り付けてみたのですが…
「変数が定義さていません」と「Sub 入力チェック()」の部分が黄色になります。
今は、家のパソコンで「eden3616さま」と同じ表を作って試してみました。
私が何かやらかしているのでしょうか?
すいません。
よろしくお願いいたします。
ありがとうございます。
補足を投稿後、あーでもないこーでもない…としてみました。
「変数の強制を宣言する」のチェックを外して、Option Explicitを削除しましたところできました!!!
ありがとうございます。
早速明日、頑張ってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ドゥ」の簡単なローマ字入力方法
-
Google form グーグルフォーム...
-
Office Word [ここに入力] が...
-
googleカレンダーの予定を入力...
-
PDF 入力途中で改行したい
-
エクセルでセル未入力時の初期...
-
EXCEL VBA でインプットボック...
-
Excelのセルを飛ばして入力する
-
powerpointで空白を作ることが...
-
ACCESS2003。数値型のフィール...
-
文字入力するとフリーズします。
-
MACで化学式を入力する方法を教...
-
「ディ」はどう入力すればいい...
-
ブラウザーの検索欄に、仮名や...
-
Forms のアンケートで、地図を...
-
懸賞用フリーソフト Windows7
-
パソコン初心者です。入力した...
-
文字を入力すると左下に表示さ...
-
文字入力すると2重になってしまう
-
TIFFファイルの編集
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Google form グーグルフォーム...
-
「ドゥ」の簡単なローマ字入力方法
-
googleカレンダーの予定を入力...
-
エクセルでセル未入力時の初期...
-
PDF 入力途中で改行したい
-
Office Word [ここに入力] が...
-
パソコンで単純作業の入力について
-
エクセルでセルに「氏名を入力...
-
「ディ」はどう入力すればいい...
-
濁点のつく字が入力出来ないと...
-
Excelのセルを飛ばして入力する
-
小さい「う」
-
り を数字で表す
-
ダウンロードしたフォーマット...
-
EXCEL VBA でインプットボック...
-
MACで化学式を入力する方法を教...
-
Googleスプレッドシートで時間...
-
文字入力すると2重になってしまう
-
Forms のアンケートで、地図を...
-
文字を入力すると左下に表示さ...
おすすめ情報