For文を使いチェックボックスがたくさんある中、チェックがついているものだけ
エクセルに入力したいと思います。下記のように作成したのですが、チェックボックスの繰り返しがわかりません・・・。1回目はcheckbox1・2回目はcheckbox2・・・
Private Sub CommandButton1_Click()
Range("A2").Select
For i = 1 To 10
If CheckBox1.Value = True Then
ActiveCell.Value = CheckBox1.Caption
ActiveCell.Offset(1, 0).Activate
End If
Next i
End Sub
よろしくお願いします。
Excel VBA かな?
UserForm 上のコントロールではなく、Sheet 上のコントロールと見受けました。
> CheckBox1.Caption
この構文は、フォームコントロールの物(Excel.CheckBox型)ではなく、
ActiveX 版の方(MSForms.CheckBox)のチェックボックスでしょうか。
Dim C1 As Excel.CheckBox
'Set C1 = Sheet1.CheckBoxes("Check Box 1")
Set C1 = Sheet1.CheckBoxes(1)
Dim C2 As MSForms.CheckBox
Set C2 = Sheet1.CheckBox1
> チェックボックスの繰り返しがわかりません
MSForms 版の方だとしたら、
For i = 1 To 10
Dim C As MSForms.CheckBox
Set C = OLEObjects("CheckBox" & CStr(i)).Object
If C.Value Then
ActiveCell.Value = C.Caption
ActiveCell.Offset(1, 0).Activate
End If
Next
とかかな…。
お早い返答有難うございます。
MSFormsとはなんでしょうか・・・。本当初心者というか、本見てコピペでなんとか繰り返し文ができただけなのでまったくわからないです・・・。申し訳ありません。Excel.CheckBox型とMSForms.CheckBoxっていうのは・・・?
現在エクセルでVBAひらきユーザーフォームで作成しています。
UserForm でしたか。であれば Controls が使えます。
Option Explicit
Private Sub CommandButton1_Click()
Dim R As Excel.Range
Set R = ActiveCell
Range(R, R.Offset(10)).Clear
Dim i As Integer
For i = 1 To 10
Dim C As MSForms.CheckBox
Set C = Controls("CheckBox" & CStr(i))
If C.Value Then
R.Value = C.Caption
Set R = R.Offset(1, 0)
End If
Next
End Sub
実行できたのですが、指定されたオブジェクトは見つかりませんとメッセージがでます。どうしてでしょうか・・・?
何度も申し訳ありません・・・。
チェックボックスの個数が10個以下だと上記メッセージがでるのでしょうか?
チェックボックスを10にして実行したところできました・・・。
たいへんありがとうございました!
またお世話になるかもしれません。よろしくお願いします。
ツイート | ![]() |