前回 http://oshiete.goo.ne.jp/qa/6556269.html で
テキストボックスの名前をメッセージボックスに表示する方法(VBA)を
教えて頂いたのですが新たにわからない事がでてきてしまったので
質問させて下さい><自力で解決しようとしたのですがどうしてもできなくて…
Accessのバージョンは2003です。
フォームに伝票番号と得意先コードの2つの入力フィールド
(テキストボックス)があります。
やりたいことは、以下のようなことです。
伝票番号は100未満の数値でなくてはならず、
得意先コードは1以上かつ10未満でなくてはなりません。
もし、上記の条件に該当しない場合はテキストボックスの色を
黄色に変更させます。
そうしたら黄色に変更されたテキストボックスだけの名前を
メッセージボックスに表示させます。
前回教えて頂いたVBAを追記して動かしたところ
どちらか片方がエラーの場合はテキストボックスの名前が
メッセージボックスに表示されるのですが、
2つともエラーの場合、メッセージボックスが2回表示され
1つのメッセージボックスに1つの名前しか表示されません。
記述したVBAでは正常な動作だと思うのですが、
これを1つのメッセージボックスに黄色のテキストボックスの
名前をいっぺんに表示させたいのですが、
どのようにすれば宜しいでしょうか。
良かったらご教授お願いします!><
現在記述しているVBAは以下になります。
----------------------------------------------------------------
Private Sub 閉じる_Click()
'フォーム上のコントロールを格納する変数
Dim ctrl As Control
'フォーム上のすべてのコントロールに対しての繰り返し処理
For Each ctrl In Me.Controls
'取得したコントロールがテキストボックスかどうか
If ctrl.ControlType = acTextBox Then
'伝票番号の値が100未満の場合
If Me!txtNo <= 100 Then
'背景をピンクに
Me!txtNo.BackColor = vbMagenta
Else
'背景を黄色にして値を元に戻す
Me!txtNo.BackColor = vbYellow
End If
'得意先コードの値が1以上かつ10未満の場合
If Me!txtCode <= 10 And Me!txtCode >= 1 Then
'背景をピンクに
Me!txtCode.BackColor = vbMagenta
Else
'背景を黄色にして値を元に戻す
Me!txtCode.BackColor = vbYellow
End If
End If
Next ctrl
Me.Undo
'フォーム上のすべてのコントロールに対しての繰り返し処理
For Each ctrl In Me.Controls
'テキストボックスのコントロールを取得
If TypeOf ctrl Is TextBox Then
'取得したコントロールが黄色だった場合
If ctrl.BackColor = vbYellow Then
'メッセージボックスに名前を表示
MsgBox ctrl.Name
End If
End If
Next ctrl
End Sub
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
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
お教え頂いたVBAで上手く動かす事ができました><
すごく助かりました!!
何度も何度も質問させて頂いてその度にお優しい回答下さり
ほんとうにありがとうございました;;
No.3
- 回答日時:
勘違いがあったので、
合わせて以下に変更してください。
If msg <> "" Then
MsgBox msg
Else
DoCmd.Close acForm, Me.Name
End If
No.2
- 回答日時:
No1です。
If Not IsNull(msg) Then
MsgBox msg
Else
MsgBox ("該当するテキストボックスはありません")
End If
の部分は、Elseのところが必要なければ
以下のようにしてもいいのでは、と思います。
If Not IsNull(msg) Then
MsgBox msg
End If
この回答への補足
ご回答ありがとうございます!
上記Elseを抜いたVBAの方で早速試させて頂きました!
すると、両方エラーの場合メッセージボックスに両方の
テキストボックスの名前を表示することができました!
ですが、両方ともエラーでない場合は何も記載されていない
メッセージボックスが表示されてしまうのですが
両方ともエラーでない場合はフォームを閉じる動作を
したいのですが、どうすれば宜しいでしょうか><
何度もすみません;;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
TableLayoutPanelでspan
-
VB6でPNGファイルを扱うには?
-
デザインモードを解除すると消...
-
Enabled=Falseのテキストボック...
-
Wordテキストコントロールが未...
-
VC++のエディットボックスの非表示
-
フォームにページを表示させた...
-
C# TEXTが空白であるLABELは何...
-
条件付き書式を設定しても、テ...
-
MSFlexGrid
-
VBのShapeコントロールを使用し...
-
VB6でLabelの最前面にText Box...
-
マウスオーバーした範囲の文字...
-
条件に該当したテキストボック...
-
ADOのCursorLocationプロパティ
-
リストボックスで任意の行を表...
-
checkbox付きListViewで デフ...
-
worksheetFunctionクラスのVloo...
-
実行時エラー 438になった時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
エクセルの画像にツールチップ...
-
ADOのCursorLocationプロパティ
-
DataGridViewで行の展開みたい...
-
コンボボックスの高さを変更し...
-
Wordテキストコントロールが未...
-
checkbox付きListViewで デフ...
-
VBからエクセルのテキストボ...
-
{ CONTROL Forms.Label.1}が...
-
C# TEXTが空白であるLABELは何...
-
MSFlexGrid
-
VB.NETで縦書表示をしたいので...
-
Enabled=Falseのテキストボック...
-
デザインモードを解除すると消...
-
ユーザーフォームに日付を表示...
-
チェックボックスの文字色の変え方
-
リストコントロールのデータの...
-
PictureBoxの背景色変更(VB.NET)
-
ACCESS2010 ActiveXコントロー...
-
VB6でLabelの最前面にText Box...
おすすめ情報