checkbox の繰り返しについて

解決


ネガイ  2008-07-26 01:20:24  No: 140146

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
よろしくお願いします。


魔界の仮面弁士  2008-07-26 01:49:44  No: 140147

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

とかかな…。


ネガイ  2008-07-26 02:00:39  No: 140148

お早い返答有難うございます。
MSFormsとはなんでしょうか・・・。本当初心者というか、本見てコピペでなんとか繰り返し文ができただけなのでまったくわからないです・・・。申し訳ありません。Excel.CheckBox型とMSForms.CheckBoxっていうのは・・・?
現在エクセルでVBAひらきユーザーフォームで作成しています。


魔界の仮面弁士  2008-07-26 05:21:15  No: 140149

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


ネガイ  2008-07-26 07:58:42  No: 140150

実行できたのですが、指定されたオブジェクトは見つかりませんとメッセージがでます。どうしてでしょうか・・・?
何度も申し訳ありません・・・。


ネガイ  2008-07-26 08:13:22  No: 140151

チェックボックスの個数が10個以下だと上記メッセージがでるのでしょうか?
チェックボックスを10にして実行したところできました・・・。
たいへんありがとうございました!
またお世話になるかもしれません。よろしくお願いします。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加