[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでプルダウンメニュー付きInputboxを作りたい』(エクする?)
別シート上のデータを参照して処理を行うプロシージャを作っていますが、 参照先のシートが複数あり(2011年1月分データ、2月分データ、等々)、 毎回必要に応じて参照先を選択できるかたちにしたいと考えています。
今は下記のように
Dim stSht As String
stSht = InputBox("参照するシート名", , ActiveWorksheet.Name)
InputBoxに手打ちするスタイルですが、手入力の煩わしさや入力ミスの 危険もあり、プルダウンから選択できるようにしたいと考えています。
コンボボックス?と思ったのですが、もうひとつよく分からず・・・ アドバイスいただけますか?上記ようなのInputBoxと使い勝手があまり 変わらないかたちが望ましいです。
Windows 2000 Excel 2003
こんな形でシート名をコンボボックスに格納できますよ。 Dim stSht As Worksheet For Each stSht In Worksheets ComboBox1.AddItem stSht.Name Next stSht
(Jera)
(Jera)さん、さっそくありがとうございます。 なるほど、プルダウンメニューの内容を指定しているのですね。参考になります。
初心者質問で恐縮ですが、マクロを起動させて、いざこのComboBox1を出現させるには どうするのでしょう? InputBoxやMsgBoxと同じ要領では出せないようで、さっそく 行き詰りました・・・
ComboBoxの投入結果に応じて、以降の処理を分岐する方法は、InputBoxを用いる 場合と大体同じだと想像しています。
(エクする?)
そうですね。ユーザーフォームを作成する必要があると思います。 コンボボックスと実行ボタンのようなものを付けるだけで良さそうですので、手順はそんなかかりません。 こちらを参考にしてみて下さい。 http://excelvba.pc-users.net/fol10/10_2.html
ちなみに、こういったフォームに拘らないならばどこかのセルをコンボボックスに見立てて プルダウンを作成しておき、そこから選択させても良いかもしれませんね。
(Jera)
どんなマクロか分からないですが。。。 こんな事をしてみるのはどうでしょう?
'------ Sub test1() Dim sn As String, dsn As String sn = ActiveSheet.Name Application.CommandBars("Workbook tabs").ShowPopup dsn = ActiveSheet.Name Sheets(sn).Select MsgBox "データシート名:" & dsn End Sub '------ Sub test2() Dim rng As Range On Error Resume Next Set rng = Application.InputBox("データシートのA1セルを選択して下さい。", Type:=8) If Err <> 0 Then MsgBox "キャンセルします。" Exit Sub End If On Error GoTo 0 MsgBox "データシート名:" & rng.Parent.Name Set rng = Nothing End Sub '------
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.