- ベストアンサー
エクセルマクロでスクロールバーとセルを連携させる方法
- エクセル2002を使用している場合、コントロールツールボックスのスクロールバーを使用して、特定の条件に基づいてセルの数値を変更するマクロを作成する方法について教えてください。
- 具体的には、Sheet1のA1に条件が記載され、Sheet2の1列目でその条件を判定し、2列目の条件下のセルの数値をSheet1のA2に表示する必要があります。さらに、Sheet1に置いたスクロールバーを使用してSheet1のA2の数値を変更したいです。
- また、スクロールバーの数値とSheet1のA2の数値、そしてSheet2の該当セルの数値は常に同期させる必要があります。このような連携を実現する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
スクロールバーにリンクするセルをセルに記入したデータによって付け替えたい,という事が言いたかったのだとすると。 シートモジュールには Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long If Target.Address <> "$A$1" Then Exit Sub On Error Resume Next r = Application.Match(Range("A1"), Worksheets("Sheet2").Range("A:A"), 0) Me.ScrollBar1.LinkedCell = "=Sheet2!$B$" & r End Sub とかなんとかしておいて,シート1のA2には単純な関数で =IF(ISERROR(MATCH(A1,Sheet2!A:A,0)),"",VLOOKUP(A1,Sheet2!A:B,2,FALSE)) のようにしておくなどで。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
質問するなら、Sheet1とSheet2のデータの有様を、(本質問では1例で良いとおもうが)セルの値が、こうだだから、こう判定して(考えて)、こうだからこうしたい、と言う風に書いてほしい。 >Sheet1のA1の条件が・・ どんな条件かかけないのか。 >Sheet2の1列目で条件を判定し、2列目の条件下のセルの数値を Sheet1のA列でSheet1の値で検索し、その見つかった行の隣のB列の値で、だろう。そうかけないのか。 >条件下のセルの 条件下とは何?持って回った表現ではないか。 >Sheet1のA2に表示し これならSheet1のA1の値で-->Sheet2のA列を検索ーー>見つかった行のB列の値を求めるーー>Sheet1の2に表示=入れる なのだから、Sheet1のA2セルにVLOOKUP関数を入れれば仕舞いではないか。 VOOLUUPはVBAの関数としてもつかえるが。 >Sheet1に置いた「スクロールバー」で、Sheet1のA2の数値を変更したいです。 折角関数なりでA2に値をセットしたので、なぜその後素の値をスクロールバーで変える必要があるのか。 あるとしてもスクロールバーの設定の仕方がわからないなら、それだけの質問で良いのではないか(LinkedCellなどのこと) === 全般に持って回った表現は避けてほしい。 読み返して他人にわかる表現に鳴って居るか、みなおしてから質問すること。 またなぜ質問のようなことが必要か、一言添えるべきではないか。 とにかく聞いていることを答えろでは回答者は道具じゃない、教えてもらうのだから丁寧に。 読者や、回答するほうも貴重な時間を割いていつも答えているのだ。安易に質問をやらないでほしいとおもう。
- merlionXX
- ベストアンサー率48% (1930/4007)
> Sheet1のA1の条件が記載され、Sheet2の1列目で条件を判定し、2列目の条件下のセルの数値をSheet1のA2に表示し、 この意味がわかりません。 http://okwave.jp/qa/q6478455.html の続きでしょうか? だとしたら、何もマクロを使う必要もなく、 > Sheet1に置いた「スクロールバー」で、Sheet1のA2の数値を変更したいです。 こうしたいなら、デザインモードで、コントロールツールボックスのスクロールバーを右クリックし、コードの表示ででてきた「プロパティScrollBar1」で、LinkedCellをSheet2!A2に、MAXを希望の数値に設定すればよいだけです。
お礼
連絡が遅くなりました。いつもありがとうございます。助かりました。
お礼
連絡が遅くなりました。返信ありがとうございます。助かりました。