[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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)
データ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)
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.