ここから本文です

エクセル マクロ 変数?ループ?を使って、チェックボックスを指定するには? チ...

m_u********さん

2010/4/712:44:05

エクセル マクロ 変数?ループ?を使って、チェックボックスを指定するには?
チェックボックスを25個用意し、値がtrueなら、エクセルに書き出す処理をしたいと思っています。一度にできる方法を教えてください。

現在、ひとつづつ指定して処理をしていますが、
一度に処理できる方法はないでしょうか?
For Nextなどで組んでみたのですが、
チェックボックスの指定がうまくいきません。
どのように指定すればよいかご教授ください。

とりあえず挑戦してみた構文です。
=====================
Private Sub CommandButton1_Click()

Dim i As Byte

For i = 1 To 25

If naiyou.CheckBox(i) = True Then ←このチェックボックスの指定でエラーが出ます
ActiveCell = naiyou.CheckBox + i.Caption ←ここでもエラーが出るはずです。ここまでたどり着けず…
ActiveCell.Offset(1, 0).Activate
End If

Next

Unload Me

End Sub
=======================



現在の構文は以下のとおりです。
=======================
Private Sub CommandButton1_Click()

If naiyou.CheckBox1 = True Then
ActiveCell = naiyou.CheckBox1.Caption
ActiveCell.Offset(1, 0).Activate
End If

If naiyou.CheckBox2 = True Then
ActiveCell = naiyou.CheckBox2.Caption
ActiveCell.Offset(1, 0).Activate
End If

If naiyou.CheckBox3 = True Then
ActiveCell = naiyou.CheckBox3.Caption
ActiveCell.Offset(1, 0).Activate
End If

以下、CheckBoxが25まで続く・・・

Unload Me

End Sub
=======================

閲覧数:
4,713
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2010/4/713:28:28

こんなのではどうでしょうか?
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 25
If naiyou.Controls("CheckBox" & i).Value = True Then
ActiveCell = naiyou.Controls("CheckBox" & i).Caption
ActiveCell.Offset(1, 0).Activate
End If
Next
Unload Me
End Sub


p.s.
naiyouという名前のユーザーフォーム上での話ですよね?
その場合は、naiyou.の部分はあってもいいですが、すべて不要だと思います。

質問した人からのコメント

2010/4/8 08:45:19

降参 ありがとうございました。無事、動かすことができました。
これを参考に、これまでのプログラムをもう少しすっきりしたものにしたいと思います。
ありがとうございました。m(_ _)m

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる