非常に初歩的かつ調べりゃ分かるだろというような質問をします。

 コンボボックスが二つあり、そのリストには二つとも同じ数だけ数値を入れておきます。そしてそれを繋げて出力させるにはどうしたらよいでしょうか。

 例えば、combo1のリストとcombo2のリストには、1,2,3,4,……という風にいくつか数字を入れておき、そこでcombo1からは5、combo2からは13を選ぶと、テキストボックス(それ以外でも変数とか)にはそれらが組み合わさって、『513』という数字が出力される――という風なものです。

 なんとなく分かるような気もするのですが、数時間どう考えても、調べても分からなかったのでここで質問します。
 どうすればよいのでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。

maruru01です。
フォームにCombo1とCombo2とText1を用意します。
Combo1とCombo2のChangeイベントとClickイベントにそれぞれ次のコードを書きます。

  If Combo1.Text <> "" And Combo2.Text <> "" Then
    Text1.Text = CStr(Combo1.Text) & CStr(Combo2.Text)
  End If

Changeイベントはコンボボックスに直接入力した場合、Clickイベントはリストからマウスで選択した場合用です。
では。
    • good
    • 0
この回答へのお礼

 ありがとうございます。何か答えを聞いたら簡単なものですね(こんなものに数時間考えた自分はいったい……)。
 かなり困っていたので助かりました。

お礼日時:2001/12/18 17:51

combo1のテキストとcombo2のテキストを結合するだけです。


原理は簡単な事で文字列と文字列の結合ですね。
⇒多分数分調べれば出てくると思います…。

combo1.text & combo2.Textで組み合わさりますので、
イベントとしてはChangeもしくはClickで行うのがよいでしょう。
    • good
    • 0
この回答へのお礼

 結合ですね……何で考えつかなかったんだろう?
 聞いたらこんなものかというようなことが最近多いです。まだ若いのに、すでにボケているのか?
 兎に角、ありがとうございました。
 

お礼日時:2001/12/18 17:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QVB6,リストボックスの特定行の色変更は可能?

リストボックスに複数行テキストが登録されているときに、特定の行の背景色を変更することは可能でしょうか?
リストボックスのプロパティ等をいろいろ探してみたのですがそれらしきものは見つかりません。
サブクラス化というやつをすればできるのでしょうか?
よろしくお願いします。

Aベストアンサー

これは「オーナードロー」というテクニックになります。

例えばListBoxの描画をVBでは意識する必要がありませんが(マウスで選択するとハイライトしたり、ウインドウを再表示した時に再描画してくれたり等)、これはOSが勝手にやってくれるからなのです。
「オーナードロー」とは、このOSがやってくれる作業を自分で行う、ということになります。
自分で行えば背景色の変更も、前景色の変更も可能になります。
背景にビットマップを描画することも可能です。

>サブクラス化というやつをすればできるのでしょうか?

オーナードローをVB6で実現するには、サブクラス化が必須になります。
オーナードローのコントロールからWM_DRAWITEMというメッセージが送られてくるので、それを処理しなければいけないからです。
ただ、VB6標準のListBoxには「オーナードローを許可する」ListBoxというのがありません。
具体的に言うと
LBS_OWNERDRAWFIXED:(デフォルト)普通のListBox
LBS_OWNERDRAWVARIABLE:オーナードローが有効なListBox
という2つのウインドウスタイルがありますが、VB6標準のListBoxはLBS_OWNERDRAWFIXED固定になっています。

これを変える事は難しいので、CreateWindowEx()API関数を使って「一から(LBS_OWNERDRAWVARIABLEを有効にした)ListBoxを作成する」という作業が必要になります。
そのうえで、サブクラス化を行い、ウインドウプロシージャでWM_DRAWITEMを捕まえて、描画を行います。

しかも、描画にしてもVC++などでウインドウ描画(ブラシなど)の知識があればその辺は何とかなると思いますが、やったことが無いとかなり大変です。
なにせ、OSがやってくれたことを全部(に近い状態で)行わなくてはいけないのですから。

もしサブクラス化の知識もおありでないようでしたら、潔くListBoxを使うのはあきらめたほうがいいかもしれませんね(^^;
一応、参考になりそうなサイトを挙げておきます。

<<ボタンのオーナードロー>>
http://www5.ocn.ne.jp/~minute/article/vb/a2.html
このケースではCommandButtonですが、考え方は一緒です。
<<サブクラス化>>
http://www.galliver.co.jp/writing/susume_vb/tre908/
ListBoxそのものではありませんが(MS提供のユーザーコントロールを使う)、参考になるサンプルとその情報があります。

いちばん簡単なのは、多少運用は面倒ですがListBoxの代わりにTreeViewなどを使う方法ですね。
時間があればListBoxでチャレンジしても構いませんが、サブクラス化一つとってもそれなりの知識が必要ですので、段階を踏んで知識を積み上げていくことをオススメします。

これは「オーナードロー」というテクニックになります。

例えばListBoxの描画をVBでは意識する必要がありませんが(マウスで選択するとハイライトしたり、ウインドウを再表示した時に再描画してくれたり等)、これはOSが勝手にやってくれるからなのです。
「オーナードロー」とは、このOSがやってくれる作業を自分で行う、ということになります。
自分で行えば背景色の変更も、前景色の変更も可能になります。
背景にビットマップを描画することも可能です。

>サブクラス化というやつをすればできるのでし...続きを読む

Qリストボックスの内容をコンボボックスに

自動でリストボックスの内容をコンボボックスに表示させたいのですがどうすればよいのでしょうか?

環境は.netです。

Aベストアンサー

Combobox.Items.Add(ListBox.Items.Item(0))

をループさせるなりで。

Qリストボックスをチェックボックススタイルにしたときに

タイトルにもあるように、リストボックスをチェックボックススタイルにしたときに
リストのなかで一つでもチェックされている項目があるかどうか
という情報を取得するにはどうしたらいいのでしょうか?

Aベストアンサー

例えばVB6で
Private Sub List1_ItemCheck(Item As Integer)
MsgBox List1.Selected(Item)
End Sub

内容の取得
Private Sub List1_ItemCheck(Item As Integer)
Text1.Text=Text1.Text+List1.List(List1.ListIndex)
End Sub

Qリストボックスの内容をテキストボックスに表示する。

タイトルどおりなんですが、リストボックスの内容をテキストボックスに表示することが出来ません。
といっても、普通に表示することは出来たのですが、
今やっていることは、テキストボックスの中にある文章を表示しておいてカーソルがある部分にリストボックスの内容を表示する。。というものです。

(例)
テキストボックスの中身が
「おはようございます。今日の天気はです。」
リストボックスの中身が
晴れ・曇り・雨
このとき「~天気は(ここにカーソルがある)です」
あるボタンを押すことで(ダブルクリックでもどちらでも良い)
テキストボックスの内容が
「~天気は晴れ(リストボックスで選択したアイテム)です。」

と表示できるようにしたいのです。どうしても文末にしか表示することが出来ませんでした。長文で分かりづらい点が多々あると思いますが、
良い方法があれば教えてください。

Aベストアンサー

カーソルの位置は、テキストボックスのSelStartプロパティで取得することができますので、その値を元に、LeftやMid関数で文字を切り貼りしてください。

Qエクセル VBA ユーザーフォーム リストボックスで選択した値をテキストボックスに自動表示

エクセル初心者です。
ユーザーフォームで検索窓を作成しリストボックスへ表示
         ↓
リストから選択すると同じユーザーフォーム内のテキストボックスに値が自動で表示
         
というフォームを作りたいのですがご教授お願いします。

A列   B列  C列   D列   E列
番号 / 品名 / 品番 / 原価 / メーカー
1    A   20×20  100  A社
2    A   20×30  150  A社
3    B   50×50  100  B社


下図のようなフォーマットで考えています。

Aベストアンサー

回答が付かないようなので、とりあえず・・・です。
シートの内容(A2:E4)をリストに表示し、そこで選択された行の内容をラベル?(A列・・・E列と表示されているところ)に表示するVBAを書いてみました。参考になりますかね?
もしかしたら、検索結果のみをリストに表示したいのでしょうか?
正直なところ、やりたいことがよくわからないので、適切な回答になっていないと思います。必要出れば追加で質問することをお勧めします。

以下、サンプルです。コードはユーザフォームの下に張り付けて下さい。
リストボックス名「ListBox1」
ラベル名「LabelA,LabelB,LabelC,LabelE」

Private Sub ListBox1_Click()
LabelA.Caption = ListBox1.List(ListBox1.ListIndex, 0)
LabelB.Caption = ListBox1.List(ListBox1.ListIndex, 1)
LabelC.Caption = ListBox1.List(ListBox1.ListIndex, 2)
LabelE.Caption = ListBox1.List(ListBox1.ListIndex, 4)
End Sub

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 5
ListBox1.RowSource = "Sheet1!A2:E4"
ListBox1.ListIndex = 0
End Sub

回答が付かないようなので、とりあえず・・・です。
シートの内容(A2:E4)をリストに表示し、そこで選択された行の内容をラベル?(A列・・・E列と表示されているところ)に表示するVBAを書いてみました。参考になりますかね?
もしかしたら、検索結果のみをリストに表示したいのでしょうか?
正直なところ、やりたいことがよくわからないので、適切な回答になっていないと思います。必要出れば追加で質問することをお勧めします。

以下、サンプルです。コードはユーザフォームの下に張り付けて下さい。
リストボックス...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報