• ベストアンサー

エクセルVBA チェックボックスのリンク先を条件により変更

こんなことは可能でしょうか? sheet1,sheet2,sheet3,は同じフォームで、それぞれチェックボックスがあり、リンク先をそれぞれのシートのA1に設定しているとします。 sheetdataではそれぞれのシートの情報をVBAを使用して表示させています。(例えばsheet1からsheetdataに行くと、sheet1の情報がsheetdataに表示され、sheet2からだとsheet2の情報がsheetdataに更新されます) ここで、sheetdataにも同じチェックボックスがあるとします。 このチェックボックスに条件をつけて、sheetdataにsheet1の情報が表示されているときはsheet1のA1にリンクし、sheet2が表示されているときはsheet2のA1にリンクすると言ったことはできるのでしょうか? 要するに、sheetdata上でチェックボックスのON/OFFを変更した際、その元となるシートも変更できるようにしたいのです。 VBAでif関数などを使って、リンク先のシートを変更できればいいのですが・・・。コントロールの書式設定ではIf関数を使ってリンクするセルを指定することはできませんよね? どうかよろしくおねがいします。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

いまいちシート名とフォーム名がこんがらがって理解できませんが、セルのリンクを使わず、チェックボックスの値から直にセルに書き込んだらどうでしょうか。ご参考まで。 Private Sub CheckBox1_Change() If CheckBox1.Value = True Then ActiveSheet.Range("a1").Value = True Else ActiveSheet.Range("a1").Value = False End If End Sub

grb2008
質問者

お礼

すいません、なかなか説明が難しくてうまく伝わらなかったようですが、他の方法でできました!お手数おかけしました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

内容が込み入って、質問の内容が説明が難しそうだ。3シート+sheetdataシートが考えているシートか。文章だけでは判りにくい。2シート+sheetdataシートに減らし、具体的にシートの例でどうしたらよいのか順をおって、連鎖関係を説明すべきだ。 リンクと言う言葉は多義性があるので、できればセルデータの「参照」で説明すべきではないか。 >sheetdataにsheet1の情報が表示されているときはsheet1のA1にリンクし >sheet1の情報が表示されているときは、なにで判るのか。 >sheet1のA1にリンク、はコードではどうなるのか。

grb2008
質問者

お礼

そうですよね、これだけじゃ分からないですよね・・・。 >sheet1の情報が表示されているときは、なにで判るのか。 別のコードを組んで、sheetdata上でsheet1の情報だとわかるようにしてあったんです。だから、例えばsheetdataのB1にsheet1と表示してある時は、チェックボックスのリンクするセルをsheet1のA1に、またsheetdataのB1にsheet2と表示してある時は、チェックボックスのリンクするセルをsheet2のA1にできればと思っていたんです。 でも、他のやり方でできました!お手数おかけしました!