• ベストアンサー

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 これをどうしたら良いでしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1731/2601)
回答No.5

> 「VBEでF8キーでステップ実行」 > 何も起こらないです。 でしたらエラーになっていないという事だと思いますが・・・。 他のコードがエラーとかじゃないですか。

nkmyr
質問者

お礼

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 コードはこれだけで、これ以外はないんです…

nkmyr
質問者

補足

すみません、 Sheets2→Sheet2 名前を間違えました。修正したら解決できました。ありがとうございました。

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率66% (1731/2601)
回答No.4

VBEでF8キーでステップ実行してどこでエラーになりますか。

nkmyr
質問者

お礼

「VBEでF8キーでステップ実行」 何も起こらないです。

  • kkkkkm
  • ベストアンサー率66% (1731/2601)
回答No.3

あと見落としてました For Each cb In .CheckBoxes の.CheckBoxesの前のドットは外してください。 For Each cb In CheckBoxes です。 また、シート1のマクロでなければ For Each cb In Sheets("シート1").CheckBoxes にしておいてください。一応シート1のマクロだったとしても上記のようにしておくと安全です。

nkmyr
質問者

お礼

シート名は「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)
回答No.2

With Sheets("Sheets2") "Sheets2"でしょうか? 名前の変更をしなければ"Sheet2"だと思います。 With Sheets("Sheet2")

  • kkkkkm
  • ベストアンサー率66% (1731/2601)
回答No.1

With ActiveSheet を With Sheets("シート2") にして .Cells(i, "A").Value = cb.TopLeftCell.Offset(, 1).Value でいけると思いますよ。

nkmyr
質問者

お礼

早急のコメントをありがとうございます。 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 結果 「インテックスが有効範囲にありません」 どこが違うのでしょうか?

関連するQ&A

専門家に質問してみよう