
こんにちは、エクセルのチェックボックスをひとつのボタンでON OFF したいのですが、詳しい方教えて頂けませんか?
チェック11_Click
チェック12_Click
チェック13_Click
チェック39_Click
チェック40_Click
この5個のボックスを、一つのボタンで一括ON もう一度押すと 一括OFFとしたいのです。
以前教えて頂いた
Dim i As Integer
With ActiveSheet
For i = 11 To 13
If .CheckBoxes(i) = xlOn Then
.CheckBoxes(i) = xlOff
Else
.CheckBoxes(i) = xlOn
End If
Next i
End With
が何故かエラーが出てしまい使えずに困っています。
出るエラーは 【 Worksheet クラスの Check Boxes プロパティを取得できません 】との事です。
詳しい方、よろしくお願いいたします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
No4でオブジェクト名を直接セルに入力するようにしておりましたが
ワンクッション入れてなんとか走るようになりました
Sub test()
Dim SHAPEOBJ As Shape
Dim KMG As String
Dim CT As Long
With ActiveSheet
CT = 0
For Each SHAPEOBJ In .Shapes
KMG = SHAPEOBJ.Name
.Range("WS20").Offset(CT,0) = KMG
CT = CT + 1
Next SHAPEOBJ
End With
End Sub
これの記述で問題なく動作しましたので、セル"WS20"から下に全オブジェクト名が抽出できると思います
再々度の回答を頂き、ありがとうございます。
試してみたいと思います、今しばらくお待ちただけますでしょうか。
よろしくお願いいたします。
No.4
- 回答日時:
変数CTの宣言とCTの初期値を0にする記述が抜けていますね
それにチェックボックスの数をカウントする記述CT=CT+1の部分もですね
sub test()
Dim SHAPEOBJ As Shape
Dim CT As Long
With ActiveSheet
CT=0
For Each SHAPEOBJ In .Shapes
.Range("WS20").Offset(CT,0)=SHAPWOBJ.Name
CT=CT+1
Next SHAPEOBJ
End With
end sub
No2の回答で欠番が複数あったらと書きましたが間違いでした
この記述では欠番を探すのではなく、全チェックボックス名を取得する記述でした(>_<)
ちなみに、シートにオブジェクトを挿入する現在シート上に存在するオブジェクト番号のMAX番号の次の番号がふられるように思います。
確実にオブジェクト(チェックボックス)を連番で配置したいのであれば、一旦全てのチェックボックスを削除してエクセルを保存終了してから新しく配置されてはいかがでしょう。
No.3
- 回答日時:
No2の修正です
>.Range(WS20).value=SHAPWOBJ.Name
セル番地を「”」でかこってください
.Range("WS20").value=SHAPWOBJ.Name
.Range("WS20").Offset(CT,0)=SHAPWOBJ.Name
失礼しました<(_ _)>
再回答頂き、ありがとうございます。
sub test()
Dim SHAPEOBJ As Shape
With ActiveSheet
For Each SHAPEOBJ In .Shapes
.Range("WS20").Offset(CT,0)=SHAPWOBJ.Name
Next SHAPEOBJ
End With
end sub
こういう事でしょうか?
やってみたのですが、オブジェクトのエラーが出てしまうようです。
更に問題が・・・・
ON/OFFボタンはたくさん作っているのですが、現在機能しているボタンとボックスのセットをそのままにして、機能していない物を削除しました。
さらに、新しく作ったボックスにボタンを割り当てたのですが、今作ったばかりのボタンが動かないんです。
何度も確認してみたのですが・・・
何か原因は考えられるでしょうか?
ちなみに、動いているコードも、動かないコードも
Dim i As Integer
With ActiveSheet
For i = 11 To 15
If .CheckBoxes(i) = xlOn Then
.CheckBoxes(i) = xlOff
Else
.CheckBoxes(i) = xlOn
End If
Next i
End With
を利用しています。
No.2
- 回答日時:
No1です
セルに表示させるのでしたら
.Range(WS20).value=SHAPWOBJ.Name
欠番が複数ありそうなら
sub test()
Dim SHAPEOBJ As Shape
Dim CT As Long
With ActiveSheet
CT=0
For Each SHAPEOBJ In .Shapes
.Range(WS20).Offset(CT,0)=SHAPWOBJ.Name
CT=CT+1
Next SHAPEOBJ
End With
end sub
と欠番があった場合にCTの値を1加算して、入力するセルの行数を変数として扱えば1行ずつズレて入力していきます
No.1
- 回答日時:
チェックボックスの番号が変数[i]に格納されていますが、チェックボックス11~13までの連続した番号になっています
提示されたソースで問題なく走りますので、チェックボックスを削除され新たに別のチェックボックスを作成された場合連番ではなくなります。
sub test()
Dim SHAPEOBJ As Shape
With ActiveSheet
For Each SHAPEOBJ In .Shapes
MsgBox SHAPEOBJ.Name
Next SHAPEOBJ
End With
end sub
このソースでチェックボックスの番号を確認して連番になってるか、途中の番号がなくなっていないかを検証してみてください
回答ありがとうございます。
おそらく、連番が解けているようです、ありがとうございます。
それで1点教えて頂ければ嬉しいのですが、メッセージボックスではなく セルに出力する方法は有るでしょうか?
見よう見まねで Range(WS20)SHAPWOBJ.Name
なんてやってみましたが、ダメみたいです。
お手数ですが教えて頂けませんでしょうか。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
Excel VBA コンボボックスで空...
-
【VB.NET】DataGridViewセルの...
-
VBA サンダーバードのメール自...
-
エクセル:マクロ「Application...
-
Excel 行の連続データを列に参...
-
エクセルで表示形式の時刻の「0...
-
31:30:00が1900/1/1 7:30:0
-
エクセルの画面で十字マークが...
-
エクセル逆三角マークで選択項...
-
エクセルのセル内に全角数字を...
-
条件付書式で「=#N/A」に色を付...
-
IF関数で空欄("")の時、Null...
-
Excel2010の指マークと白十字マ...
-
EXCELで特定のセルに表示...
-
エクセルで、指定の値よりも大...
-
エクセルでの計算式で求められ...
-
マウスポインターが白十字のまま
-
Excel countif関数で取り消し線...
-
エクセルで文字の入力がセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
マウスを乗せたときにセルの色...
-
クリップボードの内容を変数に...
-
Excel VBA コンボボックスで空...
-
GridViewの行選択イベントを発...
-
VBA サンダーバードのメール自...
-
Excelマクロで空白セルの大小比...
-
マクロについて質問です 範囲内...
-
Excel 入力規則のリストのカー...
-
VBA 別ブックから条件に合うも...
-
複数セルに〇印をつけるマクロ
-
【VB.NET】DataGridViewセルの...
-
フォントサイズ変更のマクロ
-
JTableにおけるセルの結合について
-
ExcelのVBの解析
-
ドラッグアンドドロップ
-
どのロジックでセルが変更され...
-
セルの移動
-
エクセルの取り消し線を検出す...
-
エクセル チェックボックスの...
おすすめ情報