[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックス解除コード』(コンタ)
ご教授ください
チェックボックスを使用して円状のオブジェクトをON/OFFする
記述を行ないました。(下記コード)
Sub 例1()
Dim BName As String
Dim cb As CheckBox
'クリックされたチェックボックスの名前を取得 BName = Application.Caller
'クリックしたチェックボックスが 「CheckBox1」 だったら If BName = "CheckBox1" Then
'セルEK26がTrueだったら If Range("EK26") = True Then With ActiveSheet.Shapes.AddShape(msoShapeOval, 27.5, 361.1, 14.3, 14.3)
'図形に名前を付ける .Name = "rect1" End With Else '図形 「rect1」 を削除 On Error Resume Next ActiveSheet.Shapes("rect1").Delete On Error GoTo 0 上手く動作しているのですがチェックボックス複数の一括解除等を 実行するコードを作成し実行しましたがチェックボックスの チェックを外すことは出来るのですがオブジェクトが消えてくれません。 (上記コードでチェックボックスを実際にクリックする記述が ある為と思われます。) 上記コードを維持したまま複数のチェックボックスを一括で全数解除 を出来るコードは出来ないでしょうか?
< 使用 Excel:unknown、使用 OS:unknown >
ON/OFFするって、結構頻繁に切り替える想定なんでしょうかね?
見える/見えない以外に毎回Shapeを削除したり追加したりしなきゃいけない理由がないのなら 表示/非表示の切り替えでだけも良いのではないかと思うのですが...
そうすれば「ShapeのVisibleを対応する各CheckBoxの値に合わせる」って書き方も出来るでしょうし、 ホントに消したい時にだけ使うマクロも別途用意しておけますし。
(白茶) 2022/10/31(月) 18:53:25
↑だけじゃちょっと意図が伝わらないかと思って追記。 雑な例でスマセンですが、表示/非表示の切り替えでやってしまうなら
Shape-----[Oval1][Oval2][Oval3][Oval4]... CheckBox--[CheckBox1][CheckBox2][CheckBox3][CheckBox4]... Button----[HideAll]
って配置しておいて、各CheckBoxとButtonに↓のマクロを登録
Sub 例2() Dim n As String, p As Shape, c As Long n = Application.Caller If n = "HideAll" Then '[HideAll]ボタン押下時 For Each p In ActiveSheet.Shapes If p.Name Like "Oval*" Then p.Visible = False '○を隠す If p.Name Like "CheckBox*" Then p.ControlFormat.Value = 0 'チェックも外す Next ActiveSheet.Buttons("HideAll").Visible = False '[HideAll]ボタンも隠す Else Set p = ActiveSheet.Shapes(Replace$(n, "CheckBox", "Oval")) '[CheckBox]押下時 p.Visible = Not p.Visible '○の表示状態を反転 For Each p In ActiveSheet.Shapes If p.Name Like "Oval*" And p.Visible Then c = c + 1 Next ActiveSheet.Buttons("HideAll").Visible = (c > 0) '表示中の○があれば[HideAll]ボタンを表示 End If End Sub
という感じの仕掛けでイケたりしないかなぁ... と思ったのでした。 「いや、消さなきゃならないのです」という事なら無視して下さい。
(白茶) 2022/10/31(月) 19:29:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.