3

2 つのチェックボックスを含むユーザーフォームを作成しました。各ボックスのチェックの有無によって、違うことができるようにしたいです。ただし、何をしても、常にチェックボックスの元の値 (false と false) が表示されるようです。CommandButton1 のクリックに関連付けられたコードを次に示します。

Private Sub CommandButton1_Click()

ReadData

End Sub

そしてここでReadData:

Sub ReadData()

Dim myForm As UserForm
Set myForm = UserForms.Add("ComplaintEntryForm")

Debug.Print (myForm!CheckBox1.Name)
Debug.Print (myForm!CheckBox1.Value)
Debug.Print (myForm!CheckBox2.Name)
Debug.Print (myForm!CheckBox2.Value)

End Sub

ボックスがどのようにチェックされていても、即時ウィンドウには常に次のように表示されます。

VBA.UserForms.Add("ComplaintEntryForm").Show
CheckBox1
False
CheckBox2
False

操作全体のスクリーンショットがありますが、新しいユーザーであるため、アップロードできません。

4

1 に答える 1

2

フォームを読み込んで表示するには、次の方法を試してください (これは通常のモジュールで行われます)。

Sub main()

Dim myForm As ComplaintEntryForm

Set myForm = New ComplaintEntryForm
myForm.Show
Set myForm = Nothing

End Sub

UserForm 独自のモジュールで、次を追加します。

Private Sub CheckBox1_Change()

readData

End Sub

Private Sub CheckBox2_Change()

readData

End Sub

Private Sub UserForm_Initialize()

Me.CheckBox1.Value = True
Me.CheckBox2.Value = False

End Sub

Private Sub readData()

Debug.Print Me.CheckBox1.Name
Debug.Print Me.CheckBox1.Value
Debug.Print Me.CheckBox2.Name
Debug.Print Me.CheckBox2.Value

End Sub

イベントで 2 つのチェックボックスを特定の値に初期化しましたInitialize。これは、フォームが開始される状態について確実であることを意味します

于 2012-09-12T00:52:12.470 に答える