
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
少しお邪魔します。
ワークシートのチェックボックスがどういうスタイルになっているかにもよるかと思います。たぶん、#1さんの方法のほうが管理は楽だと思います。多少のセルが必要なのと、アンタッチャブルな領域が出てくるということだけだと思います。
ただ、私はマクロで少しシュミレートしてみました。ActiveXコントロールの場合は、たぶん、インスタンスが必要かなと思っているのですが、まだ手をつけていません。というか面倒なのです。結局、取り付け方から教えるということも、また面倒です。
フォームコントロールは、クリックした時にオブジェクトの固有の名前を保持しているのですが、ActiveXコントロールは、固有の名前を保持していないので、名前を付けてあげなくてはならない、というやや面倒な手間が必要なのです。
これらのマクロの利点はアンタッチャブルな領域が、ワークシート上では存在しない、設定は一瞬で済むということです。ただ、既存のものにつける以上、多少複雑なものなります。
一度、シュミレートしてみることをお薦めします。
理屈は、既存でついている名前を、シートごとに1から順に同じ名前に統一していくというものです。
'既存のチェックのボックス向けです。
Sub ChangeCheckBoxesName()
Dim sh As Worksheet
Dim i As Long, j As Long, t As Long, k As Long
Dim Chk As CheckBox
For Each sh In Worksheets 'ブック全体で探す
t = sh.Shapes.Count
If t > 0 Then
j = 1
For i = 1 To t
If TypeName(sh.Shapes(i).DrawingObject) = "CheckBox" Then
Set Chk = sh.Shapes(i).DrawingObject
Chk.Caption = "" 'キャプションの非表示
On Error Resume Next
Chk.Name = "chk_" & j
If Err.Number > 0 Then
Do
Chk.Name = CStr(k) '臨時の名前付け
DoEvents
k = k + 1
Loop Until Err.Number = 0
Chk.Name = "chk_" & j
End If
On Error GoTo 0
Chk.OnAction = "OnOff_ChkBox" 'マクロをつける
'' Chk.TopLeftCell.Offset(, 2).Value = Chk.Name '名前の確認
Set Chk = Nothing
j = j + 1
End If
Next
Else
MsgBox "このシートにはオブジェクトが見当たりません。", vbExclamation
End If
j = 0
k = 0
Application.ScreenUpdating = True 'シートを活性化する
Next sh
End Sub
'------------------------
'これが、実際のチェックボックスに使われるマクロ
Sub OnOff_ChkBox()
Dim n As String
Dim obj As Object
Dim indx As String
Dim bln As Long
Dim sh As Worksheet
n = Application.Caller
indx = ActiveSheet.Shapes(n).Name '名前取り
bln = ActiveSheet.Shapes(n).DrawingObject.Value '値取り
Call allCheckes(indx, bln) 'シート全体で同じものを探す
End Sub
Sub allCheckes(ByVal indx As String, bln As Long)
Dim sh As Worksheet
For Each sh In Worksheets
If ActiveSheet.Name <> sh.Name Then
On Error Resume Next
sh.Shapes(indx).DrawingObject = bln
On Error GoTo 0
End If
Next sh
End Sub
'========================
オマケの実験用マクロです。
'シュミレート用のサンプルチェッボックス 1行ずつ入ります。
Sub AddChkBoxes()
'テスト用のチェックボックス設置
Dim sh As Worksheet
Dim Chk As CheckBox
Dim i As Long
For Each sh In Worksheets
For i = 1 To 10
With sh.Cells(i, 2)
Set Chk = sh.CheckBoxes.Add(.Left + 3, .Top, .Width, .Height)
Chk.Caption = ""
Chk.Name = "chk_" & i 'チェックボックスの名前の偏向
Chk.OnAction = "OnOff_ChkBox" 'マクロを取り付ける
'Chk.LinkedCell = .Offset(, 2).Address 'リンクするセル
'.Offset(, 3).Value = Chk.Name '名前をセルに出す
End With
Application.ScreenUpdating = True 'シートを活性化する
Next i
Next sh
MsgBox "シート" & Worksheets.Count & "枚にすべてのチェックボックスを付けました。", vbInformation
On Error GoTo ErrHandler
Call OnOff_ChkBox
Exit Sub
ErrHandler:
If Err.Number = 1004 Then
MsgBox "OnOff_CheckBox のマクロが必要です。", vbExclamation
Else
MsgBox "設定は正常に終わっています。"
End If
End Sub
Sub ObjectDelte()
'チェックボックスの削除用
Dim sh As Worksheet
Dim obj As Object
For Each sh In Worksheets
On Error Resume Next
For Each obj In sh.Shapes
If TypeName(obj.DrawingObject) = "CheckBox" Then
''obj.TopLeftCell.Offset(, 3).ClearContents '名前を出している時
obj.Delete
End If
Next obj
Next sh
End Sub
この回答へのお礼
お礼日時:2016/04/23 05:48
記述していただいたマクロを実行したのですが、いまいち何をしているのか理解できませんでした。理解できるよう努力します。
さっそくの回答ありがとうございました。返事遅くなりすみません。
No.1
- 回答日時:
使っているチェックボックスは、[フォームコントロール]のものですか?
それとも、[ ActiveX コントロール]のものですか?
[フォームコントロール]だったら[プロパティ](コントロールの書式設定)を
選択し、[コントロール]タブにある[リンクするセル]で特定のセルを指定
すれば、[TRUE]または[FALSE]でチェックの有無を指定できます。
[ Sheet1 ]のチェックボックスへとチェックすると、リンクするセルの値が
[TRUE]または[FALSE]になりますので、関連したチェックがすべて連動
します。
http://www4.synapse.ne.jp/yone/excel2010/faq/inp …
[ ActiveX コントロール]の場合は、[プロパティ]で[ LinkedCell ]の項目に
セル番号を指定すれば、同じように連動します。
http://www4.synapse.ne.jp/yone/excel2010/excel20 …
リンクするセルに[TRUE]または[FALSE]が表示されるのが嫌なら、その
[セルの書式設定]で[ユーザー定義]としてセミコロン3つ「;;;」を入力し、
[OK]すれば非表示になります。
http://www.relief.jp/itnote/archives/003300.php
http://www4.synapse.ne.jp/yone/excel2010/excel20 …
リンクしたセルの列幅を狭くするなどしてを見えないようにしておけば、
気にならなくなると思います。
マクロを使わなくても連動しますので、試してみてください。
この回答へのお礼
お礼日時:2016/04/23 05:51
さっそくの回答ありがとうございました。
無事やりたい作業ができるようになりました。
回答はすぐ確認させていただき、問題は解決したのですが、お礼が遅くなり申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) 画像のようなチェックボックスとハイパーリンクがありますが、 ハイパーリンクを押すと、チェックボックス 1 2023/04/07 12:56
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) たくさんあるフォームコントロールを効率よく確認するには 1 2022/12/24 12:27
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) VBAを使いシート間で貼り付け 3 2023/03/14 20:53
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで条件に一致したセル...
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
別シートのセルを絶対参照にする
-
Rangeメソッドは失敗しました。...
-
Excelシートの保護時にデータの...
-
マクロ 新しいシートにデータ...
-
EXCELのハイパーリンクのセルを...
-
エクセルで1月0日と表示される!!
-
エクセルで、加筆修正したセル...
-
複数シートの同じセル内容を1シ...
-
エクセルで指定のセルのみ完全...
-
EXCEL関数でシート名が変わる可...
-
エクセルで特定の文字を打つと...
-
エクセルで20万行あるシート...
-
エクセルで別シートからの最大...
-
エクセルのセルに、マウスで選...
-
INDIRECTを使わず excelで複数...
-
Excelのファイル容量が減らない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
Excelで複数シートの選択セルを...
-
エクセルで条件に一致したセル...
-
別シートのセルを絶対参照にする
-
日付が未入力の際はゼロか、空...
-
Excelシートの保護時にデータの...
-
エクセルで1月0日と表示される!!
-
Rangeメソッドは失敗しました。...
-
ExcelでTODAY関数を更新させな...
-
エクセルで、加筆修正したセル...
-
複数シートの同じセル内容を1シ...
-
エクセルで指定のセルのみ完全...
-
エクセルで複写のように自動入...
-
Excelでスクロールすると文字が...
-
シート参照で変数を使いたい(EX...
-
マクロ 新しいシートにデータ...
-
Excelのファイル容量が減らない...
-
エクセルで20万行あるシート...
-
エクセルのルビがついたセルを...
-
エクセルの文字
おすすめ情報