• ベストアンサー

オートフィルタと同じ事をフォームで・・・・

以下の質問について、至急、回答をください。お願いします。 質問1) 出荷.xlsというBookが存在します。その中に、"出荷リスト"というシートがあり、A列に商品コード、B列に商品名が重複して多数存在します。各列に、オートフィルタをかけ、▼をクリックした時に表示されるリストをフォームのコンボボックスに表示させる方法。 質問2) フォームのコンボボックスに表示された任意の商品コードを選択時に、テキストボックスに選択された、商品コードの商品名を表示させる方法。 ※できれば、コードを記述していただくとありがたいのですが・・・

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

Excel97なら、 rc = 0: ReDim SyohinName(0) '商品名をクリア の次に、 ws.Activate: Range("A1").Select を入れてみてください。

mino3
質問者

お礼

補足を投稿した後、自分なりに予期せぬエラーの原因を追求してみました。UserFormのRowSourceプロパティに値が入力されていて、エラーがでてしまったようです。自分のミスでした・・・・・。回答の方、ありがとうございました。また宜しくお願いします。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

Excelのヴァージョンを教えて下さい。当方、Excel2000です。 また、   For Each rg In ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible) を   For Each rg In ws.Range("A1:A100") としたら次へ行きますか。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

質問の『フォームのコンボボックスに表示させる』の『フォーム』はユーザーフォームと解釈しましたが・・・違った? フォーム(オブジェクト名:UserForm1)には、  コンボボックス(オブジェクト名:ComboBox1)  テキストボックス(オブジェクト名:TextBox1) があるとします。 ワークシート出荷リストのA1には『商品コード』、B1には『商品名』の表題があり、2行目からデータが入力されているとします。 フォームを呼び出す時にコンボボックスのリストを定義しています。 下記をUserForm1のコードウインドウに貼り付けます。 Dim SyohinName() As String '商品名用配列 'フォームを開く時の処理 Private Sub UserForm_Initialize()   Dim ws As Worksheet 'ワークシート   Dim rg As Range 'セル   Dim rc As Long '行カウンタ   Set ws = Worksheets("出荷リスト")   ComboBox1.Clear 'コンボボックスをクリア   rc = 0: ReDim SyohinName(0) '商品名をクリア   For Each rg In ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)     If rg.Column = 1 Then 'A列の場合       If rg.Row > 1 Then '2行目以降の場合         'セルが表示されていたらコンボボックスに追加する         ReDim Preserve SyohinName(rc)         ComboBox1.AddItem rg.Value 'コンボボックスに商品コードを追加         SyohinName(rc) = rg.Offset(0, 1) '商品コードを記憶         rc = rc + 1       End If     End If   Next End Sub 'コンボボックスをクリックした時の処理 Private Sub ComboBox1_Click()   TextBox1 = SyohinName(ComboBox1.ListIndex) End Sub

mino3
質問者

補足

教えください!!ユーザフォームにコードを貼り付けてステップ実行した時に、以下の場所でエラーが発生しました。どうしたらよろしいでしょうか?ボタンは、OK・ヘルプしかなく、ヘルプをクリックしてもヘルプが表示されません・・・・ ComboBox1.Clearの次のステップへ行く時に、 ⇒ "実行時エラー '-2147467259(80004005)':予期せぬエラーが発生しました。"

関連するQ&A