• 締切済み

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

みんなの回答

  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

チェックボックスには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 '--------------------------------------- 以上です。  

関連するQ&A