- 締切済み
Excel VB のチェックボックスの処理について
Excel VB のチェックボックスの処理について すみません。チェックボックスのチェックの状態を条件に処理をしたいです。 うまくいきません。 Dim strcheckBox As String For i = 0 To 100 strcheckBox = "CheckBox1_" & i celleSe = "A" & i If Worksheets("test1").Controls(strcheckBox).Value = True Then Worksheets("test2").Range(celleSe).Value = "真" End If Next
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- myRange
- ベストアンサー率71% (339/472)
チェックボックスには2つありますが、 CheckBoxということなので恐らくコントロールツールボックスのCheckBoxですね。 先ず、質問者のコードには少なくとも間違いが2点あります。 >strcheckBox = "CheckBox1_" & i と変数に文字列をセットしただけで、CheckBoxに自体には名前を付けていません。 おそらく、Controls(strcheckBox) ここに指定するからええだろうと考えてのでしょうが、 それなら、"CheckBox" & i としなければいけません。 2点目は、シートに配置した、checkBoxはControlsでは参照できません。 OLEObjectsで参照します。 新しいブックのSheet1に、 コントロールツールボックスのCheckBoxを5つ配置して 以下のコードを試してください。 ●変数は質問者の変数を使ってます。 '---------------------------------------------- Sub test() Dim i As Integer Dim celleSe As String Dim strcheckBox As String For i = 1 To 5 strcheckBox = "CheckBox" & i celleSe = "A" & i If Worksheets("Sheet1").OLEObjects(strcheckBox).Object.Value Then Worksheets("Sheet2").Range(celleSe).Value = "真" Else Worksheets("Sheet2").Range(celleSe).Value = "" End If Next End Sub '--------------------------------------------- ●更にいうとこれだけの処理であれば変数strcheckBox,celleseは不要だと思いますが。。。 '------------------------------------- Sub test222() Dim i As Integer For i = 1 To 5 If Worksheets("Sheet1").OLEObjects("CheckBox" & i).Object.Value Then Worksheets("Sheet2").Cells(i, "A").Value = "真" Else Worksheets("Sheet2").Cells(i, "A").Value = "" End If Next End Sub '--------------------------------------- 以上です。