• ベストアンサー

【Excel】シート上のドロップダウンリストから検索するには

教えてください! ドロップダウンリストをsheet1にフォームツールバーから描きます。 その右側に同じフォームよりボタンを描き「検索」ボタンとします。 ドロップダウンリストにはsheet2のA1:A5を表示させます。 ドロップダウンリストでA1を選択し、検索ボタンを押すと sheet3のA1を表示させる記述はどうなるのでしょうか? A1だけではなくA2・A3・A4を選択し、検索ボタンを押すと A2はsheet4、A3はsheet5という風に表示させたいのです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >ドロップダウンリストを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 という名称に対してではありません。

froma_a
質問者

お礼

ご質問していただいてありがとうございます。 少し考えて出来てしまいました。 お時間とらせてすみません。 ありがとうございました。

froma_a
質問者

補足

回答ありがとうございます。 補足します。 ・sheet1にコントロールツールボックスからComboBox1というコンボボックスを書きます。 ・プロパティのListFillRange欄にSheet2!A1:A5といれておきます。 ・コンボボックスからA1を選択し、同じsheet1内にあるCommandButton1をクリックするとSheet3が表示されます。 記述していただいた内容はシートに書いたComboBoxとCommandButtonに対して記述するのでしょうか? すみません。初心者で・・・ よろしくお願いします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

>sheet2のA1:A5を表示させます ListFillRangeですね。であればA1:A5のセルに入っている値が表示されるわけです。たとえばa、b、c、d、eと各セルに入っているとする。 >ドロップダウンリストでA1を選択し これは私の例で言うとaをクリックするのでしょうか。 それとも文字列の”A1”がA1セルに入っているということですか >sheet3のA1を表示させる・・・ Sheet3のA1セルの値を表示するのですか。 セルの名前か、セルの値(内容か)かが混乱して、私には判りにくいのですが。 >A2はsheet4、A3はsheet5という風に表示させたいのです この対応性はどこから来るのですか。

froma_a
質問者

お礼

ご質問していただいてありがとうございます。 少し考えて出来てしまいました。 ありがとうございました。

関連するQ&A