• ベストアンサー

チェックボックスに連動した他シートの参照

お世話になります。 以下のようなことを実現したいのですが、具体的にどのようにすれば良いのでしょうか? シートが2つ ・S1シート ・S2シート 1.S2シートのC1セルにチェックボックスを作成 2.そのチェックボックスにチェックを入れると   ⇒S2シートのA1のデータがS1シートのA1に表示され、    S2シートのB1のデータがS1シートのB1に表示される。   ⇒それとともに、S2シートのA1,B1,C1セルに青色がつく。 3.チェックボックスをはずすと、   ⇒表示されていたS1シートのデータが消える。   ⇒それとともに、青色も消える。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

一応、コントロールツールのチェックボックスにさせていただきました。 Private Sub CheckBox1_Click() With Worksheets("S2")   If Worksheets("S2").CheckBox1 Then    Worksheets("S1").Range("A1:B1").Value = .Range("A1:B1").Value    '配列による貼り付け    .Range("A1:C1").Interior.ColorIndex = 5 '青のColorIndex   Else    Worksheets("S1").Range("A1:B1").ClearContents '消去    .Range("A1:C1").Interior.ColorIndex = xlNone   End If End With End Sub

superstar
質問者

補足

ご回答ありがとうございました。 もう少し教えてください。 上記回答の場合、チェックボックスON時に 初めてS2シートのデータがS1シートに反映されます。 これをチェックボックスがONの時は リアルタイムにS2シートのデータがS1シートに 反映させることは可能でしょうか? ※Indirect関数等で参照させれば良いのかなと思い、  いろいろやりましたが、実力不足でした。   お手数掛けますが、よろしくお願いします。

その他の回答 (4)

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.5

> お手数掛けますが、よろしくお願いします。 No.2のmatsu_junです。 Wendy02様を差し置いて拙作を披露させていただきますこと、申し訳ございません。 No1のソースの下の行に、以下を貼り付けてください。 Private Sub Worksheet_Change(ByVal Target As Range)   If CheckBox1.Value Then Worksheets("S1").Range("A1:B1").Value = Range("A1:B1").Value End Sub 蛇足ですが、これはセルの値が変更されるたびに実施される命令と考えてください。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

別の案もひとつ 表示-ツールバー-フォームのチェックボックスを使用する方法です。 1.S2シートに上記のチェックボックスを置く 2.チェックボックスを右クリックしてコントロールの書式設定を開く 3.コントロールタブのリンクするセルで何処かを指定(以下の例ではセル D1) 4.A1に =IF($D1,'S1'!A1,"") と入力し、B1へコピー 5.A1~C1を選択し、書式-条件付書式で「数式が」に =D1 と入れて書式を設定

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

matsu_jun様へ いつも読ませていただいております。 フォローアップありがとうございました。 このColorIndexの色の「青」って、かなり濃い青なんですね。だから、塗りつぶし(パターン)にすると、下の文字が見えにくくなってしまいますね。 もう少し違った色(水色)とかに換える必要はあるのかなって思いました。 superstar 様へ 今回は、コントロールツールのチェックボックスにしましたので、ツールバーの水色の三角定規(デザインモード)をオンにして、チェックボックスを右クリックして、コードの表示を選ぶと、 Private Sub CheckBox1_Click() ~ End Sub が現れますので、それに上書きでも、中身だけを貼り付けでも構いません。(S2のシートモジュールに作られます)後は、右上の×をクリックして閉じれば、完成です。お分かりになっていたら、読み飛ばしてください。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

マクロをしこしこと作成していたら先を越されてしまいました。。。 ほとんど同じものができましたので、あえて載せる必要もないなということで、 おまけのページを紹介しておきます。 Wendy02様のソースで、  .Range("A1:C1").Interior.ColorIndex = 5 '青のColorIndex という部分がありまして、もし他の色にしたいという場合は 以下のページをご参照の上、数字を"5"からお好みのものに変更してください。

参考URL:
http://www.relief.jp/itnote/archives/000482.php
superstar
質問者

補足

ご回答ありがとうございました。 もう少し教えてください。 上記回答の場合、チェックボックスON時に 初めてS2シートのデータがS1シートに反映されます。 これをチェックボックスがONの時は リアルタイムにS2シートのデータがS1シートに 反映させることは可能でしょうか? ※Indirect関数等で参照させれば良いのかなと思い、  いろいろやりましたが、実力不足でした。   お手数掛けますが、よろしくお願いします。

関連するQ&A