- ベストアンサー
コンボボックスからテキストボックスに連続して値を出したい
エクセルVBAのユーザーフォームで、コンボボックスで選択したものをコマンドボタンを押すことで、同じフォーム上のテキストボックスに表示するところまではできたのですが、同じテキストボックスに追記する形でコンボボックスで選択したものを表示したいのですが、可能でしょうか。テキストボックスは複数行表示できるようにプロパティのMultiLineはTlueに設定することはしたのですが、2回目以降コンボボックスで選択した後コマンドボタンを押してもそのまま上書きするようなコードしかわかりません。 テキストボックスに、20回目まで選択項目を追加表示し、最後にはエクセルのシートにそのデータをコピーしたいのです。果たして、そのようなことは可能でしょうか。可能であればどのように記述すればよいのでしょうか。ぜひ諸先輩方のお知恵をお貸しください。よろしくお願いします。
- ecoecojp
- お礼率75% (6/8)
- オフィス系ソフト
- 回答数4
- ありがとう数5
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
テキストボックスの場合、改行コードも文字としてあつかっているので、区切りを自分で探す必要があります。 リストボックスだとlstBox.Items(i)のように1行ずつを簡単に抜き出すことができます。 エクセルのセルに順にセットするには for i = 1 to 20 ActiveWorksheet.Range(1,i).Value = lstBox.Items(i) next のようになります。 20回までの制限はlstBox.Items.Countで登録済みのデータの数を確認できますので、IF文で判断すればできます。
その他の回答 (3)
- papayuka
- ベストアンサー率45% (1388/3066)
#2さんも言ってますが、私も ListBox でやる方が楽に思えます。 下記はサンプルです。 試すなら新規ブックの UserForm に ComboBox1 ,ListBox1 ,CommandButton1 を置き、下記をコピペして実行します。 ListBox が5行になるとアクティブセルに転記します。 '-------------------------------------------------------------------- Private Sub UserForm_Initialize() For i = 65 To 90 ComboBox1.AddItem Chr(i) '適当に文字を入れる Next i End Sub '-------------------------------------------------------------------- Private Sub CommandButton1_Click() If ComboBox1.Value <> "" Then ListBox1.AddItem ComboBox1.Value If ListBox1.ListCount = 5 Then Range(ActiveCell, ActiveCell.Offset(4, 0)) = ListBox1.List ListBox1.Clear End If End Sub
お礼
大変参考になりました。ありがとうございました。
- pjunk
- ベストアンサー率32% (10/31)
txtBox.Text = txtBox.Text & CRLF & cmbBox.Text でいけそうな気がします。CRLFは改行コードでvbCRなどの定義があるはずです。はっきり覚えていません。 テキストボックスではなく、リストボックスを使うほうがよさそうな気がします。
お礼
ありがとうございます。 vbCrの記述でテキストボックス内で 改行されて表示されました! ====== Private Sub CommandButton22_Click() TextBox17.Value = TextBox17.Value & vbCr & ComboBox5.Value TextBox18.Value = TextBox18.Value & vbCr & TextBox15.Value TextBox19.Value = TextBox19.Value & vbCr & TextBox16.Value End Sub ====== 入力はコマンドボックスが1ツ、テキストボックスが2つで この値が返されるテキストボックスは3つあり、 それぞれのテキストボックスに表示された内容を 打った人が今まで何を何回選んだかがわかるように テキストボックスに累計で表示したかったのです 最終的には別のコマンドボタンでシート上のセルに各テキストボックス毎に Text17はA1からA2、A3・・・ Text18はB1からB2、B3・・・ Text19はC1からC2、C3・・・ のようにコピーしたいのです この改行された行を行ごとにセルにコピーするには どのようなコードになりますでしょうか また、この追加表示は最高20回までの追加で止めるには どのようなコードがいいのでしょう(可能なのかどうかもわかりません) 仕事上どうしても、ユーザーフォーム使ったこの様な 入力を作る必要があり、VBAの専門書を基礎編、応用編 関数コントロール編の三冊買い込んで急遽勉強していますが根本がまだ理解し切れていないので自分では考え付きません。 ぜひよろしくお願いします
- Zero_0
- ベストアンサー率35% (72/201)
現在のプログラムがどうなっているのか記述してほしい。 基本的には、コンボボックス.textをテキストボックス.textに追記するだけだと思いますのでできると思います。 text1.text = text1.text + combo1.text 位の式を入れてやればいいのではないかな。
お礼
ありがとうございます。 コードはごく単純に、 text.1.value=combo1.value のような記述しか思いつきませんでした。 教えていただいた+で続ける記述ですと改行せずに テキストボックスに続いて表示されてしまいました うーんまったくの初心者なのでなぜだかもわかりません・・・
関連するQ&A
- テキストボックスのデフォルト設定とコンボボックスの更新について
テキストボックスのデフォルト設定とコンボボックスの更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。 コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。 ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示 されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。 (1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教えていただけないでしょうか。 コンボボックスで「A」が選択された状態で「次へ」ボタンをおしたら「B」が選ばれる。 「D」が選択された状態で「次へ」ボタンをおしたら「E」が選ばれる。 「M」が選択された状態で「次へ」ボタンをおしたら「A」が選択される。(リストの最初に戻る。) というのは、次のVBAで上手くいきました。 If Combobox1.ListIndex < Combobox1.ListCount - 1 Then Combobox1.Text = Combobox1.List(Combobox1.ListIndex + 1) Else Combobox1.Text = Combobox1.List(0) End If (2)しかし「E」が選択された状態で「戻る」ボタンをおしたら「D」が選ばれる。 「G」が選択された状態で「戻る」ボタンをおしたら「F」が選ばれる。 「A」が選択された状態で「戻る」ボタンをおしたら「M」が選ばれる。(リストの最後に戻る。) といった内容のマクロがうまく組めません。 教えていただけると助かります。
- ベストアンサー
- オフィス系ソフト
- セルの値をテキストボックスに表示したい
excelマクロ初心者です。教えてください。 <やりたいこと> 選択したセルと同じ行のうち特定の列のセルの値をフォームの テキストボックスに表示し、そのフォーム上で表示したテキスト ボックスの値をコマンドボタンでコピーしたい。 また、もうひとうつのコマンドボタンをおすと選択したセルと 同じ行の別のセルに"完了"と入力できるようにしたい。
- 締切済み
- Visual Basic
- コンボボックスの自動更新について
コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。
- ベストアンサー
- オフィス系ソフト
- コンボボックスで
コンボボックスで、あるテーブルを参照してリストを出す場合、リスト中になかった場合に、コマンドボタンを押せばテーブルの追加フォームが出てきて入力できるようにしています。この場合に、入力フォーム内で終了(保存)ボタンを押せば、自動的にコンボボックスの中に入り、かつもう一度選択しなくても表示されているような操作はできないものでしょうか?
- 締切済み
- その他(データベース)
- エクセル コンボボックスについて
XP エクセル2003なのですが、 現在ワークシートに郵便番号と住所のリストを作成しています。 郵便番号 住所 ***-**** ○○県○○市・・・ ***-**** XX県XX市・・・ ユーザーフォームにテキストBOXとコンボBOXとコマンドボタンを 配置しています。 コンボBOXではリストにしている住所のみを表示していますが、 その中から探すのが大変です。そこで、 テキストBOXに郵便番号を入力し、 コマンドボタンをクリックすると、 コンボBOXに該当する住所が表示されるようにしたいのですが、 どうすればいいのか、何から始めればいいのか、 全く分かりません・・・。いろいろな方法があると思うのですが、 教えていただければ幸いです。 初心者ですので質問形式が悪いかもしれませんが よろしくお願いします。
- ベストアンサー
- Visual Basic
- フォームのテキストボックスの値をコピーしたい
excel-vba初心者です。教えてください。 フォームのテキストボックスで表示した値を コマンドボタンでコピーするにはどうすればいいですか?
- 締切済み
- オフィス系ソフト
- テキストボックスとコンボボックス
こんにちは、Accessのフォームにテキストボックスとコンボボックスを設置して、以下のような事ができないかと悩んでおります。 フォーム内には、テキストボックスとコンボボックスが設置してありまして、コンボボックス内にDB(会社名テーブル)から取得した全ての会社名が入っています。 しかし、そのレコード数が300件近くあるため、コンボボックス内から探し出すのに手間が掛かります。 そこで、コンボボックスの隣にテキストボックスを設置し、テキストボックス更新後に会社名テーブルの検索を行い、条件に合った会社名だけをコンボボックス内に入れることを考えているのですが、上手く行きません。 動作のイメージとしては下記のようになります。 (1)初期表示時はテキストボックス内に何も入力されていないので、全レコードがコンボボックス内に表示される。 (2)テキストボックスに「有限」と入力して、テキストボックスからフォーカスを移動させると、コンボボックス内に「有限」が会社名に含まれているレコードのみが入っている。 (3)テキストボックスを空白に戻すと、コンボボックス内には全レコードが表示 以上、どなたかご教授よろしくお願いします。
- ベストアンサー
- その他(データベース)
- VBでコンボボックスとテキストボックスの連係
VBでフォームにデータコンボボックスとテキストボックスを一つづつ作り、データコンボボックスで値を選択し、その値に対する値をテキストボックスに表示させたいんですがどうすればいいでしょうか? データコンボボックスで選択する元になるテーブルは ID | 商品 1 | みかん 2 | ばなな 3 | りんご と、上記のような形のテーブルをもちいています。 例えばデータコンボボックスで「1」を選択した場合テキストボックスに「みかん」と表示させたいです。
- ベストアンサー
- Visual Basic
- ExcelVBA コンボボックスの表示
お世話になります。 VBAユーザフォームのコンボボックスのリストにソースから追加しています。 ColumnCountを2に設定しているので、コンボボックスから選択するときにはちゃんと2列表示されるのですが、選択したあとにコンボボックスの表示に残るのは1列目だけなのです。 どのプロパティを変更したらいいのか見つかりません。 ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- ACCESSのコンボボックスについて
ACCESSでコンボボックスを使っているときに たまに入力できなくなってしまう時があり困っています。 例えばA,B,Cという3つのデータを選択できるコンボボックスがあり、 現在、Aが選択されていてBに変更しようとした時に コンボボックスの表示部分が突然空欄(または選択されているのに表示されていない)になってしまいます。 その後、どれを選択してもコンボボックスには何も表示されなくなってしまいます。 この現象が起こるとなぜか同じフォーム内のボタンなどにも不都合が起こるようになってしまいます。 (テキストボックスのデータを削除するボタンがあるのですがおしてもなにも起こらなくなってしまいました) いろいろ試しているのですが全く原因がわかりません。 どのようなところに原因がありそうかなどあれば教えてください。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
ありがとうございます。ListBoxにしてやって見ます。大変参考になりました。