[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コンボボックスで画面切り替え』(紫電改)
コンボボックスからシート名を選択し、画面を切り替えたいのですが 可能でしょうか?(ユーザーフォームではなく、オブジェクトのコンボボックスで) 下記まで、やってみたのですが、解らなくなってしまいました。
開発タブの挿入→フォームコントロール→コンボボックスを選択し Sheet1に貼り付けました。そして、データタブのデータの入力規則からすでにシート名 を登録済みです。ご指導よろしくお願いいたします。
< 使用 Excel:Excel2007、使用 OS:WindowsVista >
>そして、データタブのデータの入力規則からすでにシート名を登録済みです
どこに登録したのですか?
ところで、イメージとしては、コンボボックス(ドロップダウンコントロール)で シート名を選択すると、そのシートが表示されるという感じですね?
であれば、一番左側のシートタブの左に ◀ ▶ と表示されているところがありますよね。 ここを右クリックするとシート名一覧がでますので、そこでシートを選ぶと、そのシートが表示されますよ?
それではだめなのでしょうか?
(β) 2015/05/24(日) 18:50
βさんありがとうございます。 一番左側のシートタブの左に ◀ ▶ 右クリックでシート表示、知りませんでした。 これでも十分ですが、コンボボックスからでもシートの選択可能であればご教示お願 いいたします。
>コンボボックス(ドロップダウンコントロール)で シート名を選択すると、そのシートが表示される。 そのとおりです。 リストはSheet1のM1:M15にあります。
(紫電改) 2015/05/24(日) 19:11
マクロを使わないでやるのは、以下でしょうけど、選ぶとジャンプというわけにはいきません。
1.ドロップダウンコントロールを右クリック 2.コントロールの書式設定 3.コントロールタブ 4.入力範囲にM1:M15 5.リンクするセルに、このドロップダウンコントロールの裏あたりのセル。 仮に F10 。 6.任意のセルに、=HYPERLINK("#"&INDEX(M:M,F10)&"!A1") ・・・ F10 は仮。
これで、ドロップダウンからシートを選ぶと、ハイパーリンクがセットされるので、このハイパーリンクセルをクリック。
これをやるぐらいなら、◀ ▶ を右クリックのほうが簡単ですよ。
マクロで対応すれば話は別ですけど。
(β) 2015/05/24(日) 20:59
一応マクロも。
1.標準モジュールに以下を貼り付け
Sub SelSheet() Dim n As Long n = Range(ActiveSheet.DrawingObjects(Application.Caller).LinkedCell).Value Sheets(Range("M1").Offset(n - 1).Value).Select End Sub
2.ドロップダウンコントロールを右クリックしてマクロ登録。 3.SelSheetを選んで(選ばれていると思うけど)マクロ登録。
これで、ドロップダウンリストからシートを選ぶと、そのシートが表示されます。 (β) 2015/05/24(日) 21:24
マクロを使わないでやる方法、また、マクロまで考えていただき,ありが とうございます。
βさんが言われているように、、◀ ▶ を右クリックのほうが簡単ですね。
マクロを実行してみました。 思うようにシートが選択できました。 素晴らしいです。
βさんありがとうございました。 (紫電改) 2015/05/24(日) 21:56
βさんのシート選択のマクロ、重宝してます。 もう一つお願いなのですが、今度はシートの 選択ではなく、マクロを走らせることは出来 ないでしようか? Sheet1のM1からM15まで登録したものに、 上から順にSub Macro1、Sub Macro2と作って あります。 (紫電改) 2015/05/26(火) 10:26
マクロの前にとりあず。 回答案をアップしたあと、あぁ、こうすればいいのにと思ったこと。
ドロップダウンは使いません。
どこか、操作者が選びやすいセルに、=HYPERLINK("#"&M1&"!A1",M1&"の選択") で、これを下に14行フィルコピー。
こうしておけば、選びたいシートをクリックするだけで飛んでいきます。 これがいいのでは?
で、マクロ。 ここでもドロップダウンは使いません。(せっかく準備したのに、申し訳ないけど)
Sheet1のシートタブを右クリックして、コードの表示を選んで出てくるところ(シートモジュール)に以下を貼り付け
Sheet1の M1〜M15 の選択したいシート名をマウスで選んでみてください。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target(1), Range("M1:M15")) Is Nothing Then Exit Sub Sheets(Target(1).Value).Select End Sub
ところで、ご要望の「マクロを走らせる」 前にアップしたSelSheet 、今回の Worksheet_SelectionChange いずれも Select ではなく Run を使えばいいです。
ドロップダウンの方式でやるなら
Sub SelSheet() Dim n As Long n = Range(ActiveSheet.DrawingObjects(Application.Caller).LinkedCell).Value Application.Run Range("M1").Offset(n - 1).Value End Sub
Worksheet_SelectionChange でやるなら
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target(1), Range("M1:M15")) Is Nothing Then Exit Sub Application.Run Target(1).Value End Sub
(β) 2015/05/26(火) 11:22
βさん、お返事遅れてしまいました。 すみません。
いろんな、方法があるものなんですね。 とくに、=HYPERLINK("#"&M1&"!A1",M1&"の選択")は手軽で 共有者にもわかりやすいと思います。 たいへん参考になりました。 ありがとうございました。
(紫電改) 2015/05/26(火) 22:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.