No.2ベストアンサー
- 回答日時:
失礼。
No1ですが、最終的にチェックが入っていない行を着色するんでしたね。最初から書き直してみました。
テスト環境でやってください。行の高さやA列の幅がある程度ないとエラーになりますが。
Sub CB配置()
Dim x As CheckBox
Dim n As Integer
ActiveSheet.CheckBoxes.Add(7.5, 3.75, 68, 12).Select 'チェックボックスを配置
Selection.OnAction = "行着色マクロ" 'チェックの場合行に色をつけるマクロを設定
Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A551"), Type:=xlFillDefault 'チェックボックスを551行までコピペ
n = 1
For Each x In ActiveSheet.CheckBoxes
x.Select
With Selection
.Value = xlOn 'チェックボックス初期値をonに
.LinkedCell = "$O$" & n 'リンク先をそれぞれ設定
.Name = n 'チェックボックスに1から551間での名前を付ける
End With
n = n + 1
Next
End Sub
Sub 行着色マクロ()
Dim n As Integer
n = Application.caller
If Cells(n, "O").Value = False Then
Rows(n).Interior.ColorIndex = 15 '灰色に
Else
Rows(n).Interior.ColorIndex = xlNone '色なしに
End If
End Sub
非常にすばらしいですね。着色までしてもらい、ありがとうございます。チェックボックス初期値offにし、着色は、最初に色がついていて、チェックを入れる毎に消えるほうが、都合がいいため条件付き書式ですることにします。
すぐに作ることができました。本当にありがとうございました。
No.3
- 回答日時:
下記の例は10個ですが500にでも変えられるでしょう。
Sheet1で実験
C列にチェックスを並べる(他の列にするには”C”を
別のものに変える)
リンクドセルをF列に設定(他の列にするには”F”を
別のものに変える)
チェックボックスの見出しもSheet2とかの対応行に
セットしておけば、それを使って自由に表示できそう。
下記はあまり解説書にも載ってません。チェックボックスの貼りつけは、VB・VBAなどは手動でやらせる建前ですから。そういう意味で貴重なはず。
Worksheets("sheet1").DrawingObjects.Delete
はテストの時クリアするため使ったものですが、有害なら
コメント化して下さい。
Sub test01()
Worksheets("sheet1").DrawingObjects.Delete
l = Cells(1, "c").Left
h = Cells(1, "c").Height
w = Cells(1, "c").Width
For i = 1 To 10
t = Cells(i, "c").Top
ActiveSheet.CheckBoxes.Add(l, t, w, h).Select
Selection.Characters.Text = "チェック " & i
With Selection
.LinkedCell = Cells(i, "F").Address
End With
Next i
End Sub
一遍に行に色づけ
Sub test02()
n = Worksheets("sheet1").CheckBoxes.Count
MsgBox n
For i = 1 To n
If ActiveSheet.CheckBoxes(i).Value = xlOff Then
Range(Cells(i, 1), Cells(i, 10)).Interior.ColorIndex = 8
End If
Next i
End Sub
フォームのチェックボックスの場合で、コントロールツールボックスのイベントのTargetに当たるものが判らず、チェックボックスをONに変えたイベントで、その行の色を脱色するコードが作れません。済みません。Indexでなんとかならないかな。
この方法だと、test02のマクロを実行しない限り、勝手に行の着色を行わないので、非常にいいなと思いました。
脱色ができないのが残念ですね。私も作り方は分かりませんが、とても参考になりました。どうもありがとうございました。
No.1
- 回答日時:
コピぺすると、すべてO1をリンクするようになりますね。
その場合、コピペが終わった後で以下のVBAでなおせます。
Sub test()
Dim x As CheckBox
Dim n As Integer
n = 1
For Each x In ActiveSheet.CheckBoxes
x.Select
With Selection
.Value = xlOn
.LinkedCell = "$O$" & n
End With
n = n + 1
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- フリーソフト libreoffice drawのツールバーのチェックが外れてしまう 1 2022/10/04 22:02
- その他(プログラミング・Web制作) Excel の判定式で正しく判定されない場合があります。 2 2022/05/31 14:43
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Excel(エクセル) 下記エクセルの式がなぜこうなるのか理由が知りたいです。 6 2022/08/20 00:43
- Excel(エクセル) エクセルを活用した受注表作成の中で関数・数式を教えてください。 3 2022/07/23 08:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELにて複数列を同条件(色)...
-
[Excel VBA]空白セル以外に連番...
-
シート保護の状態で行の追加を...
-
エクセルで表示された値だけ行...
-
一行おきにコピーするマクロが...
-
Excelの非表示列も含めてコピー
-
エクセル マクロ 貼り付け先が...
-
エクセルの関数について(日付で...
-
エクセルのマクロ、AVERAGEIFを...
-
エクセル VBA 指定の範囲内をコ...
-
マクロで値がある列までコピー
-
エクセルで反転コピー
-
Excel条件が一致したセルの処理...
-
VBAで同じブック内の別シー...
-
"=LEFT(RC[-13],5)"を書き換えたい
-
エクセル 列を削除したら絶対値...
-
2つのセルの入力忘れ防止の警告...
-
エクセルマクロで、現在の時刻...
-
Excel 自動セル 抽出 別シート...
-
EXCELで○ヶ月を○年○ヶ月に変換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELにて複数列を同条件(色)...
-
エクセルで表示された値だけ行...
-
シート保護の状態で行の追加を...
-
エクセル マクロ 貼り付け先が...
-
Excelの非表示列も含めてコピー
-
一行おきにコピーするマクロが...
-
エクセル VBA 指定の範囲内をコ...
-
エクセルで空白以外のセルの値...
-
エクセルの関数について(日付で...
-
[Excel VBA]空白セル以外に連番...
-
エクセルで縦に長い表を印刷
-
【Excel-マクロ】グループとア...
-
エクセルで行挿入した際、自動...
-
エクセルで反転コピー
-
Excel 条件に従いセル移動するには
-
マクロ初心者です、小数点6桁で...
-
マクロで値がある列までコピー
-
特定の桁数を抽出
-
エクセルのマクロ、AVERAGEIFを...
-
VBAで同じブック内の別シー...
おすすめ情報