[[20150524181937]] 『コンボボックスで画面切り替え』(紫電改) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コンボボックスで画面切り替え』(紫電改)

 コンボボックスからシート名を選択し、画面を切り替えたいのですが
 可能でしょうか?(ユーザーフォームではなく、オブジェクトのコンボボックスで)
 下記まで、やってみたのですが、解らなくなってしまいました。

 開発タブの挿入→フォームコントロール→コンボボックスを選択し
 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.