[[20110414112843]] 『マクロでプルダウンメニュー付きInputboxを作りた』(エクする?) ページの最後に飛ぶ

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

 

『マクロでプルダウンメニュー付き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.