• ベストアンサー

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

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

  • mino3
  • お礼率26% (4/15)

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

  • ベストアンサー
  • 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

  • リストボックスをクリックすると、他フォームに値代入

    データベース超初心者です。VBAの知識がほとんどないので、初歩的な質問だと思いますが、よろしくお願いします。 フォームは2つ「入力」と、「コード選択」 (1)フォーム「入力」にあるテキストボックス「商品コード」をダブルクリックすると、フォーム「コード選択」を開く (2)フォーム「コード選択」にあるリストボックス「コードリスト」をダブルクリックすると、商品コードが、フォーム「入力」のテキストボックス「商品コード」に代入される。 ちなみに、コードリストは、2列で、商品コードと商品名が表示されるようになっています。 わかりにくい質問かもしれませんが、どうぞよろしくお願いします。

  • オートフィルターのような機能をフォーム上で VBA

    いつも大変お世話になっております。 Excel2003を使用しております。 フォーム上で、オートフィルターのような機能を作りたいと思っています。 http://okwave.jp/qa/q8423348.html 過去の質問のプログラムを何度も使わせて頂いております。 フィルターをかけたら、可視セルを抽出し、コンボボックスに登録…ということを しています。 フォーム上のコンボボックスが変更されたら フィルターをかけ、コンボボックスのリストを更新するようにしていますが、 更新したときに、またフィルターをかけてコンボボックスを更新してしまい どうしたら上手く処理がいくのか分からなくなってしまいました。 現状、 Combobox1_Changeのとき、  If Combobox1<>"" Then   フィルターをかける   コンボボックスのリストを抽出する   コンボボックスを更新する  Else   フィルターを全開にする   コンボボックスのリストを抽出する   コンボボックスを更新する  End if こういった手段をとっています。 しかし、このままですとコンボボックスを更新するときに 毎回フィルターが全開?になってしまいます。 何か良い方法があれば、教えて下さい。 よろしくお願い致します。

  • Accessのフォーム その2

    すいません、以前にも同じ質問をしたのですが、私の質問の仕方が悪くてうまくいきませんでした。 回答してくださった方、ありがとうございました! もう一度、詳しく質問しなおします。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 しかし、選んだデータの[A]しかテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、[B]のコンボボックスから選択しようとしても空っぽです。 テーブルを見ると、[A]で選んだ[1010]だけが表示されています。 非連結のときはうまく出てたんですが・・。 もしかして連結列が間違ってるのでしょうか?? 元になるテーブルは Aコード A  Bコード B Aコード Cコード C Bコード Dコード D Cコード この2列目を表示したいのです。(2列目が[1010]など表示したいデータ) 列数はそれぞれ「2」で連結列は「2」です。 更新後処理は以下の通りです。 Private Sub コンボ0_AfterUpdate() Me!コンボ2.Requery End Sub Private Sub コンボ2_AfterUpdate() Me!コンボ4.Requery End Sub Private Sub コンボ4_AfterUpdate() Me!コンボ6.Requery End Sub ぜひよろしくお願いします。

  • エクセルVBA

    初心者です エクセル2003 ユーザーフォームのコンボボックスの連携について教えてください   Seet1       A     B     C     D      E     F           1   種類1   商品1  商品A  商品あ        コンボ1  2   種類2   商品2  商品B  商品い 3   種類3   商品3  商品C  商品う                4   種類4   商品4  商品D  商品え        コンボ2 5   種類5   商品5  商品E  商品お (1)コンボボックス1と2を別々のユーザーフォームで配置(ダブルクリックにて表示 F1とF4) (2)コンボボックス1でA列の種類を選択によりコンボボックス2のリストが変わる (3)コンボボックス1で選んだ種類をF1のセルに挿入 (4)コンボボックス2は種類1の場合はB列             種類2の場合はC列             種類3の場合はD列のリストとします (5)コンボボックス2で選択した商品をF4に挿入といった具合です 何度か挑戦しましたが、同一ユーザーフォームにコンボボックス2つは成功するのですが うまくいきません コード及びコード記入場所を教えていただけませんか よろしくお願いいたします

  • C# DataGridView特定セルの入力フォーム変更について

    C# DataGridView特定セルの入力フォーム変更について C# DataGridViewについての質問です。 DataGridViewで1列目のコンボボックスを選択した値によって、その行のみ 2列目の入力フォームを変更したいのですが、その様なことは可能でしょうか? 例.1行目1列目コンボボックス「a」選択時、1行目2列目コンボボックス表示   2行目1列目コンボボックス「b」選択時、2行目2列目テキストボックス表示   3行目1列目コンボボックス「c」選択時、3行目2列目チェックボックス表示 列全体の入力フォームを変更する処理なら分かるのですが、特定のセルのみ変更する 方法が分かりません。 もし可能であれば実現方法も教えて頂けると非常に助かります。 宜しくお願いします。

  • フォームを開くボタンを1個でコントロールしたい

    「やりたいこと、ご指導頂きたいこと」 1,現在の運用方法(下記)ではコマンドボタンが4個と多く、使いづらいのでコマンドボタンを1個で完結できる方法が知りたいです。 2,個人的なお願いですが「マクロ」で対応できる方法があれば、そちらでお願いしたいと思います。理由は、VBAのスキルが低レベルで話にならない為。但し、不可の場合は、可能な方法でご指導願います。 「現在の運用方法の紹介」 企業の連絡情報帳をアクセスで運用しています。尚、フィールドの数は10ありますが、質問内容には検索項目の4個を紹介させて貰っています。 運用の概要ですが、検索専用フォームにコンボボックスを4個つくり、コンボボックスで企業リストテーブルを参照させて希望のフィールド(会社名、製品名、商品名、得意技)を選択させています。選択後はコンボボックスの横に配したコマンドボタン4個を使って個別フォームを開いている。運用の背景ですが、絞込検索では都合が悪い事情がある為です。 「各オブジェクトの紹介」 1,テーブル名:企業リスト 2,フォーム名:検索専用フォーム(レコードソースなし) 3,コンボボックスの名前:会社名、製品名、商品名、得意技 ・企業リストの各該当フィールドを値集合ソースにて参照 4,企業リストクエリ ・会社名(検索専用フォームのコンボボックス「会社名」を抽出条件に) ・製品名(検索専用フォームのコンボボックス「製品名」を抽出条件に) ・商品名(検索専用フォームのコンボボックス「商品名」を抽出条件に) ・得意技(検索専用フォームのコンボボックス「得意技」を抽出条件に) 5,フォーム名 ・会社名検索結果(レコードソースに会社名クエリ参照) ・製品名検索結果(レコードソースに製品名クエリ参照) ・商品名検索結果(レコードソースに商品名クエリ参照) ・得意技検索結果(レコードソースに得意技クエリ参照) 以上ですが、他に細かな設定(ファイル操作・選択文字の選択後の消去・等々)もありますが割愛して居ります。どうか宜しくお願いします。

  • ACCESSでコンボボックスからの入力でリスト外の追加をフォームを使っ

    ACCESSでコンボボックスからの入力でリスト外の追加をフォームを使って登録 ACCESSのフォームを使ってデータ入力を作成しています、"顧客名"をコンボボックスを使って選択するようにしていますが。 リスト外の新規顧客を入力する際には別の"顧客登録"フォームが開いて、顧客情報(読み仮名、顧客名、都道府県コード、所在地)を入力して、閉じると登録した"顧客名"がコンボボックスから選択できるようにしたいと思い、マクロを使用して(VBはよくわからないので) イベント→リスト外入力時→”顧客登録”フォームが開く 必要事項を入力し、閉じるボタンをクリック。 してみたのですが、コンボボックスのリストに先に入力した新規データが出てきません。 何が足りないのかご教授お願いいたします

  • エクセル マクロ 時間

    1)フォームにて時間を表示する。コンボボックス2つ作る。コマンドボタン(記録)を1つ作る。 2)1つのコンボボックスには時を選択させる。リストはリストはSheet2に01・02・03・・・とA列に00まで作る。 3)もう1つのコンボボックスには分を選択させる。リストはSheet2に01・02・03・・・とB列に00まで作る。 4)フォームの記録ボタンを押すと、sheet1のA2に(例 23:34)と表示させたい。 マクロの記述を教えてください。

  • Accessフォームのコンボボックス入力について

     初心者で質問の仕方も間違っているかもしれませんが、よろしくお願いします。   商品コード(商品名からそのつど考えて、商品名の頭文字をアルファベット1字、2・3桁目を連番で表す重複なし)・商品名を入力するフォームで商品コード入力にコンボボックスを使用しています。  例えば同じ頭文字の商品(バインダーA4・バインダーB5)を続けて登録する場合で、2件目の商品(B02)を入力する時にコンボボックスのリストに1件目(B01)のデータを反映する事はできないのでしょうか?

  • Access 商品マスタフォームの検索コンボBOX

    商品マスタフォームのヘッダーに非連結のコンボボックスを設けて、 商品検索キーを使ってフォームにデータを表示させるようにしています。 フォーム「商品マスタ」 選択クエリ「商品検索」(フィールド:「商品ID」「検索キー(カナ2文字)」「商品名」) コンボボックス「cb検索」 更新後処理に「再クエリマクロ」 うまく動作していますが、検索コンボボックスをもう一つ設けて、 仕入先からも検索できるようにしたいと思いました。 同じようにフォーム上に非連結のコンボボックスを作成して 選択クエリ「商品検索仕入先」(フィールド:「商品ID」「仕入先」「商品名」) コンボボックス「cb検索仕入先」 更新後処理に「再クエリマクロ」 フォームのコントロールソースのクエリ「商品ID」の条件を Like [Forms]![商品マスタ]![cb検索] & "*" Or Like [Forms]![商品マスタ]![cb検索仕入先] & "*" としました。 何度か交互に検索してみましたが、選択した商品が表示されるときとされないときがあります。 表示されないときは、検索に使っていないほうのコンボボックスの値が反映されているようです。 また、続けて検索キーのみで検索を試みてみると、うまく表示されるときと、そのときの 仕入先検索が選択している商品が表示されるときとがあります。 法則性がまったくわかりません。 一番最新のコンボボックスの選択が表示に反映されるようにするには どのようにすればよいのか教えていただけないでしょうか。 他に提示する情報があれば重ねてご教示ください。 よろしくお願いします。

専門家に質問してみよう