こんにちは、エクセル2010を使っています。
現在、ボタンに以下の様なコードでチェックボックスを ON にしています。
コードは以下の様な物です。
Sub ボタン25_Click()
Dim i%
For i = 1 To 24
ActiveSheet.CheckBoxes(i) = xlOn
End Sub
またOFFボタンを別に設けているのですが、これをひとつのボタンで ON OFF したいと思います。
もう一度押したらOFFになる様にしたいのです。
詳しい方、教えて頂けませんでしょうか。
よろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは。
>ついているチェックは消えるようですが、消えているチェックがONになりません><
今、アップロードしたコードで試してみましたが、そのような不具合は発見できません。
そこで、デバッグの方法を教えますから、ご自身で試してみてください。
ご存知だとしても、もう一度、私の方法をみてください。
その結果をみて考えてみます。
画像は、不鮮明でしょうから、言葉でも説明します。
*************
1.最初にブレークポイントを2箇所設定してください。
If InStr(1, "ON", n, 1) > 0 Or Trim(n) = "" Then '文字を消されても復活
For i = 1 To LASTNUM
マウスポインターを置きクリックし、F9を押しますと、標準ではブラウンの帯が付きます。
なお、消す時は、同じく、マウスポインターを置きクリツクし、F9を押すと消えます。
2. ワークシート上のボタンを押します。
そうすると、ブレークポイント上で、コードが止まります。
3.その後は、F8で、一行ずつ進めていきます。
そうすると、flg が決まるはずです。
ボタンのキャプションは文字が変わり、やがて、ループに入っていきます。
4.ローカルウィンドウをみると、
[n "OFF"]
[flg True]
ということになっているはずです。
それで最後までいくと、チェックボックスは、チェックがついていきます。
図は、その最中で、
[i 1]
となって、オンになってくのが分かるはずです。
*************
ここまでは分かりましたでしょうか。
なお、ブレークポイントは、残しておいてもしょうがないので、Ctrl + Shift -> F9 で、置かれているすべてのブレークポイントが消えます。
いくら、私が調子を落としていても、本質的な部分で、そんなに問題やミスをするとは思えませんし、
また、こちらの不具合がみつかりませんので、このような方法で、調べていただくしかありません。
何か不具合があれば、ブレークポイントや、その後のステップインで、ローカルウィンドウでも
確認が取れます。
画像は、ONになる瞬間の場面です。
No.3
- 回答日時:
こんにちは。
>それで内容ですが、これです、やりたかったのはこれなんです。
それはよかったです。私は、いろんなことを考えすぎて、昨日から、生活全般・何か思惑とは、全部、反対になるのです。また、違っているかもしれません。少々、落ち込み気味です。(^^;
>1から3ボックスのみに適合させるにはどうしたら良いでしょうか?
結局、最初に戻ってしまいました。
'//
Sub ボタン25_Click()
Dim i As Integer
Dim n As String
Dim btn As Object
Dim flg As Boolean
'*****************
Const LASTNUM As Long = 3 '設定
'*****************
With ActiveSheet
Set btn = .Buttons(Application.Caller)
n = btn.Caption
If InStr(1, "ON", n, 1) > 0 Or Trim(n) = "" Then '文字を消されても復活
flg = False
btn.Caption = "OFF"
btn.Font.ColorIndex = 3 '不要なら削除(フォントの色を返る-赤)
ElseIf InStr(1, "OFF", n, 1) > 0 Then
flg = True
btn.Caption = "ON"
btn.Font.ColorIndex = 5 '不要なら削除(フォントの色を返る-青)
End If
For i = 1 To LASTNUM
If flg Then
.CheckBoxes(i) = xlOn
Else
.CheckBoxes(i) = xlOff
End If
Next i
End With
End Sub
'//
No.2
- 回答日時:
こんばんは。
>チェックが全てONとかすべてOFFとかなら目的通りになるのですが、所々にチェックが入っている場合、反転してしまいます。
とういうことは、すべてがON または、すべてがOFFになることを指すのですか?
「フォームコントロールは、オブジェクト・コレクションだから、個々に別れても、全体を一つにまとめられるからです。個別のプロパティがあるのに、まとめたところで、意味はないかもしれませんが。」
内容的にちょっと難しい言い方でしたから、分からなかったと思いますが、私が却下したほうだったのですね。なお、これは、フォームコントロールだけの特長です。
なぜ、却下したかというと、一方的に決めてしまうことになるので、最初はそれを辞めました。
以下は、本来、セル上に、オン・オフを残せればよいのですが、必ずしもそういう環境にない場合は、
自分のボタンの表面に表示してしまうことです。その分だけ複雑になりました。本当に必要な部分は、*のついているところだけです。
'//
Sub ボタン25_Click()
Dim i As Integer
Dim n As String
Dim btn As Object
With ActiveSheet
Set btn = .Buttons(Application.Caller)
n = btn.Caption
If InStr(1, "ON", n, 1) > 0 Then
.CheckBoxes = xlOff '*
btn.Caption = "OFF"
Else
.CheckBoxes = xlOn
btn.Caption = "ON" '*
End If
End With
End Sub
'//
No.1
- 回答日時:
xlOff/xlOn には、反転が利かないので、このようなIf構文にしなくてはならないはずです。
以下の場合は、各々のチェックボックスが、ON はOFF に、OFF はON に変わります。
なお、他にも方法があるかもしれません。なぜなら、フォームコントロールは、オブジェクト・コレクションだから、個々に別れても、全体を一つにまとめられるからです。個別のプロパティがあるのに、まとめたところで、意味はないかもしれませんが。
'//
Sub ボタン25_Click()
Dim i As Integer '←今は、型宣言文字%は使わないような傾向です。
With ActiveSheet
For i = 1 To 24
If .CheckBoxes(i) = xlOn Then
.CheckBoxes(i) = xlOff
Else
.CheckBoxes(i) = xlOn
End If
Next i
End With
End Sub
'//
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Libreoffice calcで人名を取り消し線を入れたい。 2 2022/09/10 15:27
- 扇風機・冷風機・サーキュレーター スマートプラグで最近の扇風機は操作できない? 5 2022/11/04 13:37
- 輸入車 BMWのアイドリングストップ機能について 2016年製のアクティブツアラーです。(中古車購入) 標準 3 2022/11/17 08:08
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- 車検・修理・メンテナンス スバルサンバー(TT2)のトリップメーターの表示がおかしくなりました。 切り替えボタンを押すと「Aト 1 2022/04/29 17:11
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) エクセル VBAについて教えてください 2 2023/04/26 13:25
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
Excel ラジオボタンのリセット...
-
エクセルの画面にユーザーフォ...
-
エクセルでマクロボタンを押す...
-
コンボボックスウィザードが出...
-
パナソニックKX-PW22CLHの電話...
-
ユーザーフォームをショートカ...
-
ボタンを画像で作るか、CSSでデ...
-
【Excel2003】コマンドボタンの...
-
Accessについてです。
-
EXCELのマクロが 実行時エラー5...
-
フォームコントロールから作っ...
-
UPS警告音を止めたい
-
マクロで作ったボタンのサイズ...
-
excel スクロールしても常にボ...
-
エクセルで、オプションボタン...
-
【Excel VBA】マクロボタンを表...
-
エクセルでグループボックスを...
-
参考ボタンは必要?不要?
-
Accessのフォームでタブの色
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
UPS警告音を止めたい
-
ユーザーフォームをショートカ...
-
【Excel VBA】マクロボタンを表...
-
Excel ラジオボタンのリセット...
-
Excelで、ボタンにコメントをつ...
-
Accessのフォームでタブの色
-
エクセルで、オプションボタン...
-
マクロで作ったボタンのサイズ...
-
複数シートのボタンに同一の動...
-
フォームコントロールから作っ...
-
エクセルでマクロボタンを押す...
-
EXCELの塗りつぶしのボタ...
-
Excelにストップウオッチ?をつ...
-
EXCELのマクロが 実行時エラー5...
-
マクロ初心者です。 msgboxのre...
-
VBAでオプションボタンなどそれ...
-
Access VBAでボタンの背景色を...
-
日報の休日ボタン(トグルボタ...
おすすめ情報
回答ありがとうございます。
if文ってあるのですね、提示いただいた方法ではやりたいことに近いのですが、チェックが全てONとかすべてOFFとかなら目的通りになるのですが、所々にチェックが入っている場合、反転してしまいます。
再度の回答ありがとうございます。
予測して教えて頂いてたのですね、私の方こそ知識がなくて教えて頂き大変感謝しております、ありがとうございます。
それで内容ですが、これです、やりたかったのはこれなんです。
大変助かりましたが、こんどはフィールド上の全てのチェックボックスが一気にON OFFしちゃいます。
これを1から3ボックスのみに適合させるにはどうしたら良いでしょうか?
お手数を頂き恐縮ですが、今一度教えて頂けませんでしょうか。
よろしくお願いいたします。
回答ありがとうございます。
これでは、ついているチェックは消えるようですが、消えているチェックがONになりません><
再回答頂き、ありがとうございます。
確認の為、コードを再コピペして検証してみました。
ブレークポイント設定、実行ボタン押下後、F8で進めていくと、ローカルウィンドウに変化が出るのは、【 if flg Then 】 の時です。
その時は値は以下の様になっています。
i 1
n "ON/OFF"
LASTNUM 3
btn 空白
flg false
その後、F8を押していくと、【 if flg Then 】の時に iの値が一つずつ増えていくだけで、他の値の変化はありません。
続けて押していくと、【 if flg Then 】の値が4になった時、最終行である、End Subまで行って、ローカルウィンドウ全体が空白になり終了? する模様です。
これで正常でしょうか?
ちなみにコードはコピペ
Sub ボタン37_Click()
End Sub
の間です。