• 締切済み

Excel VBA リストボックス

end-uの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

On Error Resume Next この行をコメントアウトして確認してください。 エラーを無視してるわけですから これを活かしたままだとデバッグできません。 確認の内容は、 MATUGYO、rw、D_会社名、syutoku、それぞれ順を追って 各変数に何が格納されているか確認する必要があります。 ステップ実行時にマウスカーソルをあてて確認しても良いし、 [ローカルウィンドウ]を表示させておいて確認しても良いし。 または、実行後にListBoxのどの行が選択されているかによって 推測できそうなものですが。 気になるのはrwですね。モジュールレベルの変数でしょうか。 D_会社名がEmptyで、ListBoxのデータに空白値があるなら y_会社名.Value = "" もあり得るかもしれません。 ただ、目的からすると、単一項目選択のListBoxの場合は y_会社名.Value = Range("C" & rw).Value これで選択してくれます。 データがListにない場合も対応できるように この直前にOn Error Resume Nextを入れれば良いです。

all5goo
質問者

お礼

回答ありがとうございます。 各変数へは把握しているとおりに格納されていました。 D_会社名もしっかり格納されています。 rwはPublicで宣言してあります。 直接y_会社名.Value = Range("C" & rw).ValueでもOKとのことで、記述をそちらに切り替えましたが、やはり、y_会社名.Value = ""になってしまいます。 画像を添付したほうが見やすいのですが、やり方がわからないのでべた打ちしました。 Sub (1)会社名読み込み() 'On Error Resume Next With Worksheets("マスタ") MATUGYO = .Cells(65536, 2).End(xlUp).Row For i = 4 To MATUGYO y_会社名.AddItem .Cells(i, 2) Next i y_会社名.Value = Range("C" & rw).Value MsgBox y_会社名 ''*****呼び出した行の項目を選択状態にしておく ' '呼び出した行の項目を取得 ' D_会社名 = Range("C" & rw).Value ' 'それがマスタの何行目か ' Set syutoku = .Range("B4:B65536").Find(what:=D_会社名) ' If y_会社名.ListCount > 0 Then ' 'マスタの開始行分を差し引いた行を選択状態にする ' y_会社名.ListIndex = syutoku.Row - 4 ' ' kari = y_会社名.Value ' End If End With End Sub y_会社名.Value = ""になっているのに ユーザーフォームを見ると、きっちり選択状態にはなっており、 そのまま更新ボタンを押して、再度Excelに戻すと空白で上書きされてしまいます。 選択状態になっているリストをクリックしてから更新ボタンを押せば、ちゃんとtestがExcelに上書きされます。

関連するQ&A

  • ExcelVBA でリストリストボックスに列見出しをコーディングでつける

    エクセルVBAのフォームにリストボックスを作り、データーベースから読み出したデータを表示させています。 この時、各列にテーブル名とはちがう列名をつけたいのですが、シートに記述するのではなく、コーディングでつける事は出来ませんか? ControlTipTextに「test1;test;test3;」と指定してみたりしましたが、駄目でした。 どなたかご教授、あるいは出来ません、シートに隠しか方法はありません、と全否定をしてください。

  • エクセル リストボックスについて

    現在、エクセルにて入力フォームを作っているんですが、入力規則の設定のとこでつまづいています。 つまづいているのは、例えば・・・リスト一覧の表を別のファイルのシートに用意をします。ここでの仮名として「リスト一覧表」を作ったとします。 そして本ファイルであるシートの中のセル(D10)に「リスト一覧表」から入力規則のように表示をするためにコンボボックスを使い、 「リスト一覧表」から使いたいリストを選んで「D10」に表示をして、 なおかつ、印刷時には「コンボボックス」の表示を出したくありません。そこで表示を消すにはどうしたらいいのか教えてください。 よろしくお願いいたします。

  • リストボックスの列見出し(ExcelのVBA)

     ExcelのVBAでのリストボックスコントロールについての質問です。  リストボックスの列見出しを作りたいのですが、なかなか上手く行きません。リストボックスに項目を設定するのはExcelのシートから… ----- WorkSheets("Sheet1").ListBox1.ListFillRange = "A1:B2"  ↑(Sheet1のA1:B2のデータをListBox1に追加する場合)↑ ----- のようにするのではなく… ----- Dim MyList(1,1) ~~~(MyList配列にデータを代入) Userform1.ListBox1.Column = Mylist() -----  というように、コードから項目を追加しています。  そこで、列見出しを追加したいと思ったのですが… ----- ListBox1.ColumnHeads = True ----- と記述しても、列見出しは真っ白で、その下に項目が表示されるだけです。  列見出し専用の配列を用意しなければならないというような事はあるのでしょうか?  もしあれば、どのように定義すればよいのでしょうか。  ちなみに、用いているExcelの環境は『Microsoft Excel 2004 for Mac (11.5.6)』、VBAの環境は『Microsoft Visual Basic (11.5)』です。  我流で覚えてきたような知識ですので、とても常識的な事を聞いているかもしれないですが、回答宜しくお願いします。

  • リストボックスのイベントプロシージャー

    「氏名一覧」というフォームに、該当する氏名が リストボックスの中に表示されています。 リストボックスから1名氏名を選んだ時(ダブルクリックした時)に、 その選んだ人の個人情報のフォームを開くようにしたいのですが、 「氏名一覧」リストボックスの [ダブルクリック時]イベントプロシージャーでのコードの記述の仕方が分かりません。どなたか教えて下さい。宜しくお願いします。 ACCESS97を使っています。

  • ACCESS リストボックスの一覧の作り方

    ACCESS2002です。 納品書を作成するフォームが、メイン・サブフォーム形式であります。 このフォームには、企業名、支店名、担当者名を選択するコンボボックスやリストボックスがあります。 企業名はコンボボックスの一覧から選択します。 企業名を選択したら、過去に納品実績のある支店の一覧がリストボックス内に表示され、その一覧から今回納品店舗を選択するようにしたいんです。 納品実績のある店舗は納品データをグループ化した納品店舗一覧をクエリーで作成し、リストボックスの元データとして設定しています。 現状は、2件以上のレコードを入力すると、新規レコードに移動して企業名を選択しても、店舗一覧はその前に入力していた企業の店舗一覧のままとなっています。 仕方がないので、いったん、フォームを閉じて、再度開いて入力をしています。 フォームを閉じなくても、新規レコードに移動したら、店舗一覧もクリアされるようにしたいんです。 皆様のお知恵をお貸し下さい。 よろしくお願いします。

  • リストボックスの使い方が解りません。

    リストボックスの使い方が解りません。 商品台帳作成の為、ユーザーフォーム(登録画面)にて 商品番号、商品名、商品名(カナ)、商品分類、仕入値、売値を入力し、 登録ボタンで他のExcelを起動→転記→保存→閉じるという作業を しようとしたのですが、商品分類の所をリストボックスにしたいと 考えましたが、リストボックスの使い方が良く解りません。 商品分類の部分来たら、登録画面上で A 野菜 B 鮮魚 C 精肉 D 乾物 というのが出て、アルファベットを選択したいと思っております。 10種類程度で、それ以上に増える事は無いのですが 別シートで商品分類台帳のようなものが必要なのでしょうか? 初心者丸出しの質問ですが、宜しく御教授下さい。

  • エクセル2003のVBA

    お尋ねします。 契約書管理台帳をエクセル2003で作成中です。 シート1には、日付、契約書名、顧客コード、顧客名等 シート2には、顧客コード、顧客名等、顧客名カナ等、顧客情報がリストになっています。 契約書が来たときに、顧客コードをシート2より、ひっぱりたいのです。 リストを考えたのですが、500件ほどあり、とても選べません。 なので、イメージとして カナ検索、例えばフォームに、グーといれれば、グー株式会社を検索し、 0001というコードをセルに表す、という感じです。 VBAを使わなくて良ければ、それが一番いいのですが、色々検索すると、 使わないとできなさそうなので。。。。 どなたか、ご教授ください。よろしくお願いします。

  • エクセル マクロ コンボボックスリスト

    sheet1の場所でボタンクリックでフォーム表示。その中でコンボボックスリストを作成。 sheet3にデーターをA列に作りました。 1)フォームの中のコンボボックスをクリックしてリスト表示させた い。マクロの記述を教えてください。 2)コンボボックスリストに表示した文字をsheet2に記録するボタンを作ったがマクロの記述を教えてください。

  • ACCESS リストの使い方

    お願いします! ACCESS2003で作成した「F商品マスタ」というフォームで、 「朝食名」という名前のリストボックスがあります。 そのリスト一覧は、「T朝食マスタ」という名前のテーブルから取得しています。 「T朝食マスタ」には、「朝食コード」「朝食名」のフィールドがあります。 「F商品マスタ」内にある「朝食名」のリストボックスで朝食コードを選択したら、 横にあるテキストボックスに「T朝食マスタ」の「朝食名」が表示されるようにしたいのですが、 どのようにすればよいでしょうか? ご回答お願い致します。

  • Excelで、リストボックスの値によってVBAの記述を変えたい

    エクセルの表(データベース)を 並び替えるマクロを作っています。 コマンドボタンを押したらあらかじめ登録された 条件で並び替えされる、というところまではできました。 (ここでいう登録とは私が条件指定してVBAに記述したものです) そこで質問なのですが、ユーザーフォームの上で 並び替えの条件(優先順位・降順、昇順)をユーザーに 指定してもらい、ボタンを押したら並び替えされる、 というものを作りたいのですが可能でしょうか。 なぜこんな面倒なことをするかというと、 複数のユーザーが扱うデータベースで、 並び替えの操作を簡略化したいのと、 間違った操作によるデータベースの破壊を 防止したいからです。 まずユーザーフォーム上のリストボックスの中に 優先順位をかける項目を入れておき、それを3つ 作りました。(並び替えの条件が3つまであるので) 次に各リストボックスの横にラジオボタンを置き、 降順、昇順を指定できるようにする。 (ここで、ラジオボタンのどちらかしか選択できないように したいのですがその方法もわからないので教えてください) そして、それぞれの指定された結果でVBAの記述(値) を変えてコマンドボタンを押したら並び替えされる、 という風にしたいのです。(あくまでイメージですが) Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, ・・・とつづく記述で 上の記述のRange("A2")と、xlDescendingの値を ユーザーフォーム上で選んだ結果によって 変更したい、ということなんですが、こんなことって 出来るものでしょうか。もしくは同じ様な事を 可能な書き方とかがあれば教えて頂きたいです。 よろしくお願いします。