重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

vbaの初心者です。ユーザーフォーム、マルチページにテキストボックス、コンボボックスが複数あります。ページを指定して、テキストボックス、コンボボックスに空欄が有れば、メッセージボックスにて「空欄有り」のメッセージを出したいのですが・・・・うまく行きません。テキストボックス、コンボボックスにはオブジェクト名を付けています。 素人ですので分かり安く教えて下さい。

A 回答 (3件)

#2です。


構造として
ユーザーフォーム -> マルチページ -> ページ -> 各コントロール
です。
UserForm1.MultiPage1を変更している場合、実際のオブジェクト名に変更

>ページを指定して
1ページのみ対象にするなら、
ページオブジェクト名で指定するのが良いかも
例:Page1のオブジェクト名をページ1にした場合(添付画像参照)

Dim Cntl As Control
Dim ans As String
  'Page1のオブジェクト名をページ1にした場合
  With UserForm1.MultiPage1
  'すべてのコントロールを取得
   For Each Cntl In .ページ1.Controls
  ' .Valueプロパティがないコントロールはエラーで飛ばす
    On Error GoTo NG_value
    If Cntl.Value = "" Then
      ans = ans & .ページ1.Caption & vbCrLf & _
        Cntl.Name & vbCrLf
    End If
NG_value:
   Next
  End With
  MsgBox (ans)


すべてのページに対象を広げる場合(インデックス)
Dim Cntl As Control
Dim i As Integer
Dim ans As String
  With UserForm2.MultiPage1
   For i = 0 To .Pages.Count - 1
    .Value = i
    For Each Cntl In .Pages(i).Controls
      On Error GoTo NG_value
      If Cntl.Value = "" Then
       ans = ans & .Pages(.Value).Caption & vbCrLf & _
         Cntl.Name & vbCrLf
      End If
NG_value:
    Next
   Next i
  End With
  MsgBox (ans)
「vba ユーザーフォームのテキストボック」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます。うまく動きました!!
70歳過ぎのVBA初心者ですが、ボケ防止も兼ねてガンバリマス。

お礼日時:2021/03/01 17:23

こんにちは、


>テキストボックス、コンボボックスが複数あります。
>オブジェクト名を付けています。
との事で、そこはご質問者様しか分からない所なのでお任せして
複数ページにあるTextBox1に対して空欄確認をするサンプルです。
>素人ですので分かり安く教えて下さい。
ご質問があいまいなので、具体例を示せませんので、
サンプルで確認してくださいね。サンプルでステップ実行などを行い挙動を確認すれば、それほど難しく無いかと。ごめんなさい。

Private Sub Button_Click()
Dim i As Integer
Dim ans As String
  With MultiPage1
   For i = 0 To .Pages.Count - 1
    .Value = i
    If TextBox1.Text = "" Then
      ans = ans & .Pages(.Value).Caption & vbCrLf & _
        TextBox1.Name & vbCrLf
    End If
   Next i
  End With
  MsgBox (ans)
End Sub
    • good
    • 0

仕様が良くわかんない。



まず使う際。
ページを指定してってのはページを選択してって事?
その中の該当するコントロールの状態を調べたい?

オブジェクト名を変更している?
ページ数がどの程度か不明ですが、オブジェクト名が連番でないとしたならページ毎にそこに含まれる各コントロール名を一覧にして、その値を基に調べるって手もありそう。

だけど一番問題なのはそれらの情報が何もない事。
教わる前に必要なものは開示して欲しい。
作成したBookは回答者は見る事は出来ませんから。
Bookを見ながらなら早々に終わるかもですがそう言うのはダメでしょうし、周囲に理解できる人がいるのかどうか・・・
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!