• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件に該当したテキストボックスの名前を(2))

VBAでテキストボックスの名前を表示する方法

このQ&Aのポイント
  • VBAでテキストボックスの名前を表示する方法について質問させてください。前回教えていただいたVBAを使って、伝票番号と得意先コードの2つのテキストボックスの値をチェックし、条件に該当しない場合はテキストボックスの色を黄色に変更することができます。しかし、2つのテキストボックスがともにエラーの場合に、名前が2回表示されず、1つの名前しか表示されません。1つのメッセージボックスに黄色のテキストボックスの名前を一度に表示させるにはどうすればよいでしょうか?
  • VBAでテキストボックスの名前をまとめて表示する方法について教えてください。前回の質問で教えていただいたVBAを使用し、2つのテキストボックスの値をチェックし、条件に該当しない場合はテキストボックスの背景色を黄色に変更しました。しかし、2つのテキストボックスがともにエラーの場合に、メッセージボックスが2回表示されず、1つの名前しか表示されません。黄色のテキストボックスの名前を一度に表示させるにはどうすればよいでしょうか?
  • VBAで黄色のテキストボックスの名前をまとめて表示する方法について質問です。前回教えていただいたVBAを使って、フォーム上のテキストボックスの値をチェックし、条件に該当しない場合はテキストボックスの背景色を黄色に変更することができます。しかし、2つのテキストボックスがともにエラーの場合に、メッセージボックスが2回表示されず、1つの名前しか表示されません。黄色のテキストボックスの名前を一度に表示させるにはどうすればよいでしょうか?

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

前回のを少し変更したものを掲載しておきます。 Private Sub コマンド6_Click() Dim ctl As Control Dim msg As String For Each ctl In Me.Controls If TypeOf ctl Is TextBox Then If ctl.Value = 3 Then ctl.BackColor = vbYellow End If End If Next ctl For Each ctl In Me.Controls If TypeOf ctl Is TextBox Then If ctl.BackColor = vbYellow Then msg = msg & ctl.Name & vbCrLf 'これはコメントアウトしていますMsgBox ctl.Name End If End If Next ctl If Not IsNull(msg) Then MsgBox msg Else MsgBox ("該当するテキストボックスはありません") End If End Sub

その他の回答 (4)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

テキストボックスを初期化するのも載せておきます。 Private Sub コマンド7_Click() Dim ctl As Control For Each ctl In Me.Controls If TypeOf ctl Is TextBox Then 'テキストボックスをクリア ctl.Value = ""   'テキストボックスの背景色を白に ctl.BackColor = vbWhite End If Next ctl End Sub

macaron0321
質問者

お礼

お教え頂いたVBAで上手く動かす事ができました>< すごく助かりました!! 何度も何度も質問させて頂いてその度にお優しい回答下さり ほんとうにありがとうございました;;

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

ついでに少しお待ちを。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

勘違いがあったので、 合わせて以下に変更してください。 If msg <> "" Then MsgBox msg Else DoCmd.Close acForm, Me.Name End If

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。 If Not IsNull(msg) Then MsgBox msg Else MsgBox ("該当するテキストボックスはありません") End If の部分は、Elseのところが必要なければ 以下のようにしてもいいのでは、と思います。 If Not IsNull(msg) Then MsgBox msg End If

macaron0321
質問者

補足

ご回答ありがとうございます! 上記Elseを抜いたVBAの方で早速試させて頂きました! すると、両方エラーの場合メッセージボックスに両方の テキストボックスの名前を表示することができました! ですが、両方ともエラーでない場合は何も記載されていない メッセージボックスが表示されてしまうのですが 両方ともエラーでない場合はフォームを閉じる動作を したいのですが、どうすれば宜しいでしょうか>< 何度もすみません;;