[[20051020171522]] 『VBA:コンボボックス』(Shimazu) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA:コンボボックス』(Shimazu)

 シート2に、5×5の表が100個くらいあり、各々にNo1、No2、・・・というように番号を付けてあります。
 シート1に、コンボボックスを作り、このコンボボックスから、シート2にある5×5のデータ(No1とかNo2とか・・・)
 を選んでクリックすると、シート1の固定のところに、そのデータがコピーされるようにしたいのですが、
 どうしたら出来るでしょうか?いろいろ試してみましたが、出来ませんでした。
 どなたかお教え下さい。 よろしくお願いします。


 > 各々にNo1、No2、・・・というように番号を付けてあります。
 セル値?

 > シート1の固定のところに
 固定のところとは?

 > そのデータがコピーされるようにしたいのですが
 問題点はコピー処理ではなく、検索? 
 Findメソッドを利用しては?  

  (INA)


 分かりにくくて、すみません。
 5×5の表にデータが入っていまして、その5×5の表に、挿入から名前を付けてあります。
 シート1のあるところに、コンボボックスで選んだシート2のデータを取り込みたいのです。
 よろしくお願いします。(Shimazu)


 'ThisWorkBookモジュール
 Private Sub Workbook_Open()
 With worksheets("Sheet1").ComboBox1
    .Clear
    .AddItem "NO1"
    .AddItem "NO2"
 End With
 End Sub

 -----------------------------------
 'sheetモジュール
 '(コントロールツールボックスのコンボボックスを配置しておく。)
 Private Sub ComboBox1_Change()
 With Worksheets("Sheet2")
    .Select
    .Range(ComboBox1.Value).Select
 End With
 End Sub

   (INA)


 INAさん、ありがとうございました。
 しかし、私のやり方が悪いとみえて、うまく動作しませんでした。
 もう少し検討してみます。(Shimazu)


 こちらに統合しました。
 (kazu)


『VBA:再度コンボボックス』(Shimazu)

     データ1                     データ2         データ1
 	A	B	C    D    E    F    G     データ2
1	256	189   123               586     486       899
2	127	284      255               299     855       599
3	366	455      186               222     750       384

 上記のような表があり、ActiveXコントロールから、コンボボックスをワークシートに貼り付けました。
 そして、プロパティの ListFillRange にデータ1、データ2のアドレスを指定して、
 選択できるようにしました。
 しかし、そのデータ1、データ2を選択した時に、そのデータが選択されて、
 他の場所に コピー・貼り付けしたいのですが、出来ません。
 どなたか教えて下さい。よろしくお願いします。


 >プロパティの ListFillRange にデータ1、データ2のアドレスを指定して、選択できるようにしました。

 その他の設定は?
 何かコードを書いているのならそのコードは?
 コンボボックスは2つですね?(seiya)


 その他の設定はしていません。
 又、コードを書こうと思っているのですが、どこにどういうコードを書けばいいか分かりません。

 >コンボボックスは2つですね?
   本当は200個くらい、同じ形式の表があります。又増える可能性もあります。
   簡単にするために、2個ということで質問させていただきました。
   よろしくお願いします。(Shimazu)


 >その他の設定はしていません
 ということは、1つ目はA列の値、2つ目はE列の値だけの表示ですね?
 そのデータをどのシートのどこに表示したいのですか?(seiya)


 一つ目のデータは、A1〜C3まで、二つ目はE1〜G3までのデータです。
 次のデータは、1行空けてA5〜C7、E5〜G7・・・というように続きます。
 貼り付けたい場所は、シート2のA1から、シート2のE1からになります。
 よろしくお願いします。(Shimazu)


 遅くなりました。
 下記コードをシートモジュールに貼り付けてください。

 Private Sub ComboBox1_Change()
 Dim i As Integer, ii As Integer
 Dim x As Integer, y As Long, a()
 With Me.ComboBox1
        x = .ListIndex
        ReDim a(1 To 1, 1 To 3)
        For ii = 0 To 2
            a(1, ii + 1) = .List(x, ii)
        Next
        y = Sheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Row + 1
        If Sheets("sheet2").Cells(1, 1) = "" Then y = 1
        Sheets("sheet2").Cells(y, 1).Resize(, 3) = a
        Erase a
 End With
 End Sub

 コンボボックスのColumnCountプロパティを3に設定して下さい。
 (seiya)


 seiyaさん、早速ありがとうございました。
 ただ上記コードを貼り付けて実行しましたが、次のような実行エラーが出ました。
 「Listプロパティの値を取得出来ません。引数が不正です。」

 私のやり方が悪いと思いますが、コードの解説をお願いします。
 たびたびのお願い、申し訳ありません。(Shimazu)


 ListIndexプロパティはコンボボックスで選択されている項目を返します。
 例えばコンボボックスの2行目が選択された場合 1 を返します。
 その値をxに代入して、コンボボックスの各列の値を配列に一旦入れて、出力しています。
 コンボボックスの名前はComboBox1になっていますか?(seiya)


 seiyaさん、ありがとうございました。
 コンボボックスの名前はComboBox1になっています。

 F8キーで、デバッグしましたところ、a(1, ii + 1) = .List(x, ii) は
 x=0,ii=1ならば通りましたが、x=0、ii=1の時、エラーが出ました。
 お暇なとき、お教え下さい。(Shimazu)


 >x=0,ii=1ならば通りましたが、x=0、ii=1の時、エラーが出ました。
 x=0, ii=2の時にエラーですか?
 ListFillRangeプロパティの設定はA1:C3になっていますか?(seiya)


 seiyaさん、大変失礼しました。
 おっしゃるように、ListFillRangeプロパティの設定が違っていました。
 お粗末なことで、ご迷惑をおかけしました。ありがとうございました。(Shimazu)


 こちらに統合しました。
 (kazu)


『VBA:コンボボックス3』(Shimazu)

 ActiveXコントロールのコンボボックスをワークシートに貼り付けました。
 項目が20個くらいあります。
 コンボボックスをクリックした時に、スクロールバーを表示せずに全部が見えるようにしたいのですが、
 どのようなプロパティを使用すればいいのでしょうか?お教え下さい。


 ListBox にしたほうが良いのでは?(seiya)


 そうですネー、しかしListBoxだとスペースをとるので、
 どうしてもコンボボックスにしたいのですが、設定できませんでしょうか?(Shimazu)


 私の知る限りでは無理だと思います。(seiya)


 フォームのコンボボックスは、ドロップダウンリストの行数、
 コントロールツールボックスは、ListRows、両方とも50としましたが、
 期待通り表示できました。                    (LOOKUP)


 >コンボボックスをクリックした時に、....

 あはっ、シートを開いたときに予めすべて表示するのと勘違いしてました。(seiya)

 seiyaさん、LOOKUPさん、
 出かけていて御礼が遅くなりました。
 LOOKUPさんのおっしゃるとおり、ListRows の設定で出来ました。
 イヤー、最高でした。思い通り出来て、とてもうれしいです。
 ありがとうございました。(Shimazu)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.