1から100までの数のチェックボックスを含むuserformがあります。フォームを送信すると、フォームの送信時にそれらの状態を表すバイナリ文字列が作成されるように、 100個のチェックボックスがあり、0は偽、1は真です。これを実行するためのコードはここにある:VBA内の別のユーザーフォームからチェックボックスを設定する
Private Sub BusRulesSubmit_Click()
Dim myBinaryString As String
Dim nm As String
Dim c As Control
For busRuleIdx = 1 To 100
nm = "CheckBox" & busRuleIdx
Set c = Controls(nm)
If c.Value = True Then
myBinaryString = myBinaryString & "1"
Else
myBinaryString = myBinaryString & "0"
End If
Next
msgBox myBinaryString
End Sub
私は今、私は同様のバイナリ文字列を持っている別のフォームから、このユーザーフォームを開き、真または偽のチェックボックスの値を設定するには、この文字列を使用したいですappropariate。しかし、自分のコントロールを設定するときに問題が発生しています。コードはここにある:私は上記実行すると
Private Sub populateBusRules()
Dim c As Control
Dim myBRBinary As String
myBRBinary = "000000000011100000000000000000000000000000000000000000000000000000000010000000000000000000000000000"
For busRuleIdx = 1 To 100
nm = "BusinessRules.CheckBox" & busRuleIdx
Set c = Controls(nm)
If Mid(myBRBinary, buRuleIdx - 1, 1) = 1 Then
c.Value = True
Else
c.Value = False
End If
Next
End Sub
が、私は「指定されたオブジェクトが見つかりませんでした」ランタイムエラーを取得し、それがコードは(C =コントロールを設定する」と述べ、この問題を強調してデバッグする行くときnm ") - 私はループの最初のラウンドで失敗していることがわかります。nm =" BusinessRules.CheckBox1 "
興味深いことに、" Set c = Controls(BusinessRules.CheckBox1) "というコードを実行するとそのような問題はない。
ご協力いただければ幸いです。
おかげで、
ポール。
こんにちは、VBAでどのくらい熟達していますか?元のフォームは開いたままですか? –
フォームが同時に開かれない場合は、グローバル変数が必要です。 – KyloRen
はいフォームは同時に開いていますが、私はhideコマンドを使用していますが、 –