- ベストアンサー
【Excel】シート上のドロップダウンリストから検索するには
教えてください! ドロップダウンリストをsheet1にフォームツールバーから描きます。 その右側に同じフォームよりボタンを描き「検索」ボタンとします。 ドロップダウンリストにはsheet2のA1:A5を表示させます。 ドロップダウンリストでA1を選択し、検索ボタンを押すと sheet3のA1を表示させる記述はどうなるのでしょうか? A1だけではなくA2・A3・A4を選択し、検索ボタンを押すと A2はsheet4、A3はsheet5という風に表示させたいのです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >ドロップダウンリストをsheet1にフォームツールバーから描きます。 最初に、ドロップダウンリストというのは何でしょうか? フォームには、ドロップダウンリストという名前のコントロールがありません。それは、コンボボックスではないでしょうか? 今回の場合は、いずれにしてもマクロが必要ですから、一般的には、コントロールツール側から作ったほうが一般的には分りやすいかもしれません。 いろいろ試行錯誤してみましたが、私ですと、このようなマクロを提示できます。 フォーム側からですと、以下のような設定マクロが必要です。 Visual Basic Editor 画面で、SettingFormButtonのコード上にカーソルを置き、F5 を押せば、設定されます。 なお、以下のマクロは、もしかしたら、Version によって左右する可能性があるので、例えば、2003などでは、うまくいかないかもしれません。 '<Sheet1 モジュールのみ> Option Explicit Sub SettingFormButton() 'フォームのボタンの設定マクロ Dim Bt As Button On Error GoTo ErrorHandler Set Bt = Sheet1.Buttons(1) Bt.OnAction = "Sheet1.ButtonAction" ErrorHandler: If Err.Number > 0 Then MsgBox "ボタンがありません。", vbCritical Else MsgBox "設定できました。" End If End Sub Private Sub ButtonAction() 'フォームのボタン用マクロ Dim i As Integer, myListfill As String Dim ret As Variant On Error GoTo ErrHhandler myListfill = Sheet1.DropDowns(1).ListFillRange i = Sheet1.DropDowns(1) ret = Application.Evaluate("Index(" & myListfill & "," & i & ",1)") If Not IsError(ret) Then Worksheets(i + 2).Range("A1").Value = ret End If ErrHhandler: If Err.Number > 0 Then MsgBox Err.Description, vbCritical Else Beep '確認用の音 End If End Sub エラーの中で、「Index が有効範囲にはありません」と出たら、それは、シート数が不足しているからです。また、リストの順番とシートの順番に対応しているのであって、Sheet3 という名称に対してではありません。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
>sheet2のA1:A5を表示させます ListFillRangeですね。であればA1:A5のセルに入っている値が表示されるわけです。たとえばa、b、c、d、eと各セルに入っているとする。 >ドロップダウンリストでA1を選択し これは私の例で言うとaをクリックするのでしょうか。 それとも文字列の”A1”がA1セルに入っているということですか >sheet3のA1を表示させる・・・ Sheet3のA1セルの値を表示するのですか。 セルの名前か、セルの値(内容か)かが混乱して、私には判りにくいのですが。 >A2はsheet4、A3はsheet5という風に表示させたいのです この対応性はどこから来るのですか。
お礼
ご質問していただいてありがとうございます。 少し考えて出来てしまいました。 ありがとうございました。
お礼
ご質問していただいてありがとうございます。 少し考えて出来てしまいました。 お時間とらせてすみません。 ありがとうございました。
補足
回答ありがとうございます。 補足します。 ・sheet1にコントロールツールボックスからComboBox1というコンボボックスを書きます。 ・プロパティのListFillRange欄にSheet2!A1:A5といれておきます。 ・コンボボックスからA1を選択し、同じsheet1内にあるCommandButton1をクリックするとSheet3が表示されます。 記述していただいた内容はシートに書いたComboBoxとCommandButtonに対して記述するのでしょうか? すみません。初心者で・・・ よろしくお願いします。