こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル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関数を使ってリンクするセルを指定することはできませんよね?

どうかよろしくおねがいします。

投稿日時 - 2009-06-28 23:30:18

QNo.5082736

困ってます

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

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

投稿日時 - 2009-06-28 23:53:41

お礼

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

投稿日時 - 2009-06-29 12:17:08

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2009-06-29 09:15:51

お礼

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

投稿日時 - 2009-06-29 12:26:12

あなたにオススメの質問