【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

教えてください!

ドロップダウンリストをsheet1にフォームツールバーから描きます。
その右側に同じフォームよりボタンを描き「検索」ボタンとします。

ドロップダウンリストにはsheet2のA1:A5を表示させます。
ドロップダウンリストでA1を選択し、検索ボタンを押すと
sheet3のA1を表示させる記述はどうなるのでしょうか?

A1だけではなくA2・A3・A4を選択し、検索ボタンを押すと
A2はsheet4、A3はsheet5という風に表示させたいのです。

よろしくお願いします。

A 回答 (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 という名称に対してではありません。

この回答への補足

回答ありがとうございます。

補足します。
・sheet1にコントロールツールボックスからComboBox1というコンボボックスを書きます。
・プロパティのListFillRange欄にSheet2!A1:A5といれておきます。
・コンボボックスからA1を選択し、同じsheet1内にあるCommandButton1をクリックするとSheet3が表示されます。

記述していただいた内容はシートに書いたComboBoxとCommandButtonに対して記述するのでしょうか?
すみません。初心者で・・・
よろしくお願いします。

補足日時:2005/08/25 22:10
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/27 21:09

>sheet2のA1:A5を表示させます


ListFillRangeですね。であればA1:A5のセルに入っている値が表示されるわけです。たとえばa、b、c、d、eと各セルに入っているとする。

>ドロップダウンリストでA1を選択し
これは私の例で言うとaをクリックするのでしょうか。
それとも文字列の”A1”がA1セルに入っているということですか
>sheet3のA1を表示させる・・・
Sheet3のA1セルの値を表示するのですか。
セルの名前か、セルの値(内容か)かが混乱して、私には判りにくいのですが。
>A2はsheet4、A3はsheet5という風に表示させたいのです
この対応性はどこから来るのですか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/27 21:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!