いつもお世話になっております。
これはもしかしたら皆さんにとっては「すごーく簡単なこと」かもしれませんが、
色々と試行錯誤してもうまくいかないので聞いて見ました。
よろしくお願いいたします。
困っていること
シート上のチェックボックスにチェックが入っているかどうかを判断したいが、
VBAで動かすとエラーが出る
例えば丸で囲っているチェックボックス(フォームコントロールチェックボックスです)の
チェックボックスの値は「Chk_1」です。
この値を取得するため、コードではこのように書きました。
VBA
1Private Function chkbox_chk(ByVal wbactive As Workbook) 2Dim cnt As Integer 3 4 Debug.Print wbactive.Worksheets("Main").CheckBoxes(Chk_1).Value 5 Debug.Print wbactive.Worksheets("Main").CheckBoxes(Chk_2).Value 6 Debug.Print wbactive.Worksheets("Main").CheckBoxes(Chk_3).Value 7 Debug.Print wbactive.Worksheets("Main").CheckBoxes(Chk_4).Value 8 Debug.Print wbactive.Worksheets("Main").CheckBoxes(Chk_5).Value 9 10End Function
こうやって、チェックボックスの値がちゃんと取得されているかを
debug.print出力しながら確認したいのです。
それで、書き方がいけないのかなと思い、
例えばCheckboxs(1)に変えたりしてみたのですが、どれもダメでした。
ちなみに、wbActiveは
Set wbactive = ThisWorkbook wbactive.Worksheets(”Main").Activate
というふうにして取得しています。
なので、wbactiveがちゃんと引き継がれていないのかな?と思って、試しに
チェックボックスの数を調べるコードを入れてみましたが、そちらはちゃんと取れていました。
また、E4セルに「ああああ」と入力し、それを取得するコードを入れてもちゃんと取得できました。
なので、wbActiveが引き継がれていないわけではなさそうです。
また、今回の件がきっかけで色々と調べたのですが、
チェックボックスにはフォームコントロールとActiveXコントロールがあり
それぞれ書き方が違う・・とのことでしたので、それも頭に入れて色々と調べてみたのですが、
どの書き方もエラーが出てしまうので、もしかしたら他のところで原因があるのかな?と
考えています。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー