• ベストアンサー

エクセルでチェックの無い行に着色

エクセルでツールバー→フォームにある チェックボックスをA1~A551に入れ、O1~O551に それぞれをリンク(TRUE、FALSEの表示) させたいのですが、 コントロールの書式設定でA1にO1をリンクさせ、コピぺすると、A2もO1をリンクし、うまくいきません。 相対参照にしています。数が多い為、それぞれリンクを設定するには非常に時間がかかります。 うまくいく方法はありませんか、最終的には、 チェックが入っていない行を着色したいと考えています。 全く別の方法でもいいので、分かる方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答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

uk5050
質問者

お礼

非常にすばらしいですね。着色までしてもらい、ありがとうございます。チェックボックス初期値offにし、着色は、最初に色がついていて、チェックを入れる毎に消えるほうが、都合がいいため条件付き書式ですることにします。 すぐに作ることができました。本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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でなんとかならないかな。

uk5050
質問者

お礼

この方法だと、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

  • エクセルのフォームのチェックボックスについて

    エクセルのフォームのチェックボックスについて あるセルにフォームのチェックボックスを付け、 そのセルに、true・falseの条件設定をしました。 その設定を利用して、条件式書式の設定で、 trueの時にとなりのセルを赤にするようにしました。 以上のような行が1500行あります。 1つ1つ設定するのが困難のため、 マクロが使えるフォームのチェックボックスを使用しようと試みております。 しかし、マクロ内のVBAの記述方法が解りません。(1行だけなら解ります) ご存知の方がおられましたら教えてください。 よろしくお願いいたします。

  • Excelのチェックボックスについて

    Excelでtrueとfalseの仕分けをしたくてチェックボックスを使用しました。 しかし、チェックボックスのコントロールの書式設定では、1個ずつ設定しなければならないので、手数がかかります。 何かいい方法はありませんか。

  • エクセル マクロ フォームのチェックボックス

    エクセルのフォームのチェックボックスで【On】にした際に 「コントロールの書式設定」にある「リンクするセル」のロックをしたいのですが マクロで実現する際、どのようなにできるのでしょうか? また、フォームのチェックボックスで【Off】にした際に、「リンクするセル」のロックの解除のしたいです。 初心者で下記を記述しましたが、チェックボックスが多いため、すべてのチェックボックスに登録するのが時間がかかるのあで、教授お願いします。 Cells.Locked = False ActiveSheet.Protect userinterfaceonly:=True ActiveSheet.Range("AY29").Locked = True

  • 「セルの書式設定」の「ユーザー定義」でセルの値がTRUEなら○FALSEなら×と表示する方法について

    マイクロソフトのエクセル2000で 「セルの書式設定」の「ユーザー定義」を [=1]"○";[赤][=2]"×"にすると、 1なら○、2なら赤字の×をセルに表示される機能がありますが、 これを応用してTRUEなら○、FALSEなら赤字の×をセルに表示したいと思い、 [="TRUE]"○";[赤][=FALSE]"×"と設定してみたのですが、 上手く行かず困ってます。どこが違うのか、それともこの方法では出来ないのかを教えてください。 補足 何故これをやりたいのかと言うと、フォームのチェックボックスを使用し 「コントロールの書式設定」の「リンクするセル」の返り値が TRUEとFALSEなので、このセル自身を見やすい文字に変更したいと思ったので・・・。 リンクするセルと違うところに○×を置くのは簡単にif関数で出来るんですが、 リンクするセル自身を○×に置くのができないです。 お手数かと思いますが、セルの書式設定に拘らず、 何らかのヒントを知ってる方、教えてください。

  • Excel チェックボックスについて

    Excelでチェックボックスをセルとリンクさせると、TrueかFalseがセル上に記録されると思います。 この情報は他セルで計算式で使用したいです。 しかし印刷するとTrue、Falseが印刷されてしまうと思います。 文字列の色を背景色と同じにしてしまえば印刷されていないように見えますが、こういった方法ではなく、印刷させないようにするにはどのような方法がありますか? チェックボックスとリンクするセルを非表示にしてしまう方法は考えました。 この方法が現実的な気がしていますが、それ以外に有効な方法があればお願いいたします。 環境はExcel2003です。

  • エクセル セルを着色する方法は

    エクセルファイルにて、 C2が、YESなら、A2とB2も一緒に、C2と同じ様に着色をしたいのですが、 C2は、条件付き書式設定で、YESを含むという条件で着色をできるのですが、 A2とB2をどの様に設定して、着色していいのかがわかりません。 どなたか教えて頂けると助かります。 宜しくお願い致します。

  • エクセルでチェックボックスを使った関数。。。

    どなたかお助け下さい。。。 エクセルでチェックボックスを使った関数を作っています。 http://106.g-serve.net/kojin/555566666.gif 【2の行】のどれか一つにチェックを入れると【A2】に1の行の項目が反映されるようにしたいのですが、 例えば、【C2】にチェックを入れると【A2】に「交際費」と表示 各チェックボックスには「コントロールの書式設定」でリンクするセルは指定済みです。 とりあえず、A2には =IF(B2=FALSE,"",B1) まで書いたのですが。。。 手詰まりです@@; 各列のチェックボックスにはどれか1つチェックが入ります。 どうぞよろしくお願いいたします!

  • エクセルのフォームのチェックボックスについて

    フォームのチェックボックスの書式設定で”リンクするセル”を入れています。 例えば、C10を入れます。次の行にコピーしても自動でC11となってくれません。絶対値は関係ないようです。複数コピーする時に、一々書式設定で変えるのは面倒です。 エクセルは、通常絶対値をつけずにコピーすると、行や列は自動でずれてくれるはずですが、チェックボックスについては違うのでしょうか。 他の方法があるのでしたら、どなたかお教えください。 よろしくお願いします。 できれば、マクロはつかわず簡単な方法がいいのですが・・・

  • エクセルのチェックボックスについて教えてください

    エクセルのチェックボックスについて質問します。 ネットで調べたところ、下記の様にありました。 (1)[フォーム]ツールバーを表示しておきます。[チェックボックス]ボタンをONにして、ワークシート上でクリックすると、チェックボックスが表示されます。 (2)チェックボックス上で右クリックし、[コントロールの書式設定]をクリックします。 (3)[コントロールの書式設定]のダイアログボックスで、[コントロール]のタブをクリックし、[値]で規定値を設定します。・・・ とありましたが、私の使用しているパソコンでは、コントロールの大やログボックスで[コントロール]タブが見当たりません。 何か特別な設定でもいるのでしょうか? 使用しているエクセルは2003です。 分かる方がいらっしゃいましたら教えてください。よろしくお願いします。

  • エクセルでのチェックボックスの文字について

    エクセル2003を使用しています。 「表示」「ツールバー」「フォーム」から チェックボックス(□にレ点がつくやつです)が 作成できますが、このときにできる□の横の文字の フォントやサイズを変更したいのですが、どうすれば できるのでしょう? 右クリックで「コントロールの書式設定」というのが 出てきますがココではできないですよね?

専門家に質問してみよう