こんにちは、エクセルのチェックボックスをひとつのボタンで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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
VBA 別ブックから条件に合うも...
-
クリップボードの内容を変数に...
-
マウスを乗せたときにセルの色...
-
【VBA】セルが空白の場合に処理...
-
Excel_VBAについて質疑です。(...
-
エクセルの取り消し線を検出す...
-
VBA サンダーバードのメール自...
-
JTableにおけるセルの結合について
-
Excel 入力規則のリストのカー...
-
Excel VBA コンボボックスで空...
-
VBA 文字列を1文字ずつ調べて"...
-
SPREADで1つのセルに複数のチ...
-
GridViewの行選択イベントを発...
-
エクセル: セルの枠を超えて表示
-
エクセルでの計算式で求められ...
-
エクセルのアポストロフィを一...
-
エクセルのセル内に全角数字を...
-
【エクセル】関数で「A1が0でな...
-
EXCELで特定のセルに表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
Excel VBA コンボボックスで空...
-
マウスを乗せたときにセルの色...
-
クリップボードの内容を変数に...
-
Excel 入力規則のリストのカー...
-
VBA 別ブックから条件に合うも...
-
GridViewの行選択イベントを発...
-
VBA サンダーバードのメール自...
-
マクロについて質問です 範囲内...
-
【VB.NET】DataGridViewセルの...
-
複数セルに〇印をつけるマクロ
-
エクセルの取り消し線を検出す...
-
【VBA】セルが空白の場合に処理...
-
VBA 文字列を1文字ずつ調べて"...
-
■EXCEL(二つのセルの文字列を一...
-
VB2005 DATAGRIDVIEWでの矢印キ...
-
SPREADで1つのセルに複数のチ...
-
アクティブセルのひとつ右をア...
-
マクロのセル結合について
-
ドラッグアンドドロップ
おすすめ情報