- ベストアンサー
ExcelVBA TextBoxの値を取得できない
- Excel2010でUserFormを使用してTextBoxの値を取得しようとしていますが、値が取得できません。
- UserForm1とUserForm2において共通のプロシージャを使用してTextBoxの値を取得していますが、値が反映されません。
- Debug.Printを使用して値を確認した結果、UserForm1では値を取得できることが判明しました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>対処法が分かれば教えていただきたいです。 参考に Option Explicit Dim myForm1 As UserForm1 Dim myForm2 As UserForm2 Sub UserForm1起動() Set myForm1 = UserForms.Add("UserForm1") myForm1.Show (vbModeless) End Sub Sub UserForm2起動() Set myForm2 = UserForms.Add("UserForm2") myForm2.Show (vbModeless) End Sub Sub UserForm1処理() Const Num = 100 Call TextBoxチェック(myForm1, Num) End Sub Sub UserForm2処理() Const Num = 150 Call TextBoxチェック(myForm2, Num) End Sub Sub TextBoxチェック(ByVal UserFormObj As Object, Num As Integer) Dim i As Integer Dim Con As Control With UserFormObj For i = 1 To Num Set Con = .Controls("TextBox" & i) Debug.Print Con.Name Debug.Print .Controls("TextBox" & i).Value Next i End With End Sub
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
こんにちは まず下記のコードを実行してください。 Private Sub CommandButton1_Click() Dim myForm As UserForm1 Set myForm = UserForms.Add("UserForm1") myForm.Show (vbModeless) End Sub コマンドボタンを押す毎にUserForm1が作成されるのが 確認できたかと思います。 >With UserForms.Add(UFName) >For i = 1 To Num >Set Con = .Controls("TextBox" & i) >Debug.Print Con.Name >Debug.Print .Controls("TextBox" & i).Value ここでUserForms.Add(UFName)を実行することで TextBoxに値の無い新たなUserForm1を参照しているのでは
お礼
できました!ありがとうございました。