質問するログイン新規登録

質問編集履歴

1

全て入力後に「質問をする」ボタンを押したが画面が切り替わっただけで投稿されず、再度開きなおして「質問をする」を押すと入力途中のものが投稿されたため編集しました。

2021/08/23 03:25

投稿

D0NKAMA
D0NKAMA

スコア28

title CHANGED
@@ -1,1 +1,1 @@
1
- VBA フォーム未入力チェック
1
+ VBAフォーム 未入力チェック処理の書き方
body CHANGED
@@ -1,22 +1,34 @@
1
1
  ### 前提・実現したいこと
2
- 申込書をフォームで作成しているのですが、登録ボタンを押した際に未入力項目がないかをチェックする処理の書き方に詰まっています。
2
+ 申込書をExcelのフォームで作成しているのですが、登録ボタンを押した際に未入力項目がないかをチェックする処理の書き方に悩んでいます。
3
3
 
4
+
5
+
4
6
  ### 発生している問題・エラーメッセージ
7
+ 未入力の項目があれば項目名をMsgBoxに表示さたいので下記のように考えました
8
+ ```VBA
9
+ Dim msg As String ' MsgBoxに表示する未入力の項目名
5
10
 
6
- ```
7
11
  If Me.Text_Name.Value = "" Then msg="・名前"& vbCrLf
12
+ If Me.Text_Tel.Value = "" Then msg="・電話番号"& vbCrLf
8
13
  ```
9
- 項目数30ほどある
14
+ しかし項目数30ほどあるのでこの書き方では非効率なのではないかと思いました。
10
- ### 該当のソースコード
11
15
 
12
- ```ここに言語名を入力
13
- ソースコード
14
- ```
15
16
 
17
+
16
18
  ### 試したこと
19
+ オブジェクト名が「ツールの種類_項目名」なので、ForEach文で回そうと思い下記を考えました。
20
+ ```VBA
21
+ Dim Ctrl As Control ' MsgBoxに表示する未入力の項目名
17
22
 
23
+ For Each Ctrl In Me.Controls
24
+ Select Case Ctrl.Name
18
- ここに問題に対して試したことを記載してください。
25
+ Case "Text_Name"
19
-
20
- ### 補足情報(FW/ツールのバージョンなど)
26
+ msg="・名前"& vbCrLf
21
-
22
- ここにより詳細な情報を記載してください。
27
+ Case "Text_Tel"
28
+ msg="・電話番号"& vbCrLf
29
+
30
+
31
+
32
+ Next Ctrl
33
+ ```
34
+ 僕の中ではこの書き方が見やすく速度的にもよい?のかと思いますが、他に効率の良い処理の書き方があれば教えていただきたいです。