- ベストアンサー
VBA チェックボックスをチェックした項目のみ抽出
1.シート1のA列にフォームのチェックボックスを配置 2.B列に名前を並べる 3.チェックボックスでクリックし、チェックマークが出る 4.マクロでシート2のA列から抽出された名前を並べる 以上のことをしたいと思い、検索しましたところ、似たようなものが見つかりました。 https://okwave.jp/qa/q5065347.html ただ、このVBAは抽出先がG列です。抽出先はシート2のA列にしたいのです。 .Cells(i, "G").Value = cb.TopLeftCell.Offset(, 1).Value これをどうしたら良いでしょうか? 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 「VBEでF8キーでステップ実行」 > 何も起こらないです。 でしたらエラーになっていないという事だと思いますが・・・。 他のコードがエラーとかじゃないですか。
その他の回答 (4)
- kkkkkm
- ベストアンサー率66% (1731/2601)
VBEでF8キーでステップ実行してどこでエラーになりますか。
お礼
「VBEでF8キーでステップ実行」 何も起こらないです。
- kkkkkm
- ベストアンサー率66% (1731/2601)
あと見落としてました For Each cb In .CheckBoxes の.CheckBoxesの前のドットは外してください。 For Each cb In CheckBoxes です。 また、シート1のマクロでなければ For Each cb In Sheets("シート1").CheckBoxes にしておいてください。一応シート1のマクロだったとしても上記のようにしておくと安全です。
お礼
シート名は「Sheets2」です。 Sub test01() With Sheets("Sheets2") For Each cb In CheckBoxes If cb.Value = xlOn Then i = i + 1 .Cells(i, "A").Value = cb.TopLeftCell.Offset(, 1).Value End If Next End With End Sub このようにドットを外しましたが、 変わらず「インテックスが有効範囲にありません」でした。
- kkkkkm
- ベストアンサー率66% (1731/2601)
With Sheets("Sheets2") "Sheets2"でしょうか? 名前の変更をしなければ"Sheet2"だと思います。 With Sheets("Sheet2")
- kkkkkm
- ベストアンサー率66% (1731/2601)
With ActiveSheet を With Sheets("シート2") にして .Cells(i, "A").Value = cb.TopLeftCell.Offset(, 1).Value でいけると思いますよ。
お礼
早急のコメントをありがとうございます。 Sub test01() With Sheets("Sheets2") For Each cb In .CheckBoxes If cb.Value = xlOn Then i = i + 1 .Cells(i, "A").Value = cb.TopLeftCell.Offset(, 1).Value End If Next End With End Sub 結果 「インテックスが有効範囲にありません」 どこが違うのでしょうか?
お礼
Sub test01() With Sheets("Sheets2") For Each cb In CheckBoxes If cb.Value = xlOn Then i = i + 1 .Cells(i, "A").Value = cb.TopLeftCell.Offset(, 1).Value End If Next End With End Sub コードはこれだけで、これ以外はないんです…
補足
すみません、 Sheets2→Sheet2 名前を間違えました。修正したら解決できました。ありがとうございました。