[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ComboBoxの空白を詰めるには』(俊)
UserForm1UserForm2とあり
UserForm1
商品名 個数
ComboBox1 ComboBox11
ComboBox2 ComboBox12
…
ComboBox9 ComboBox19
とあり
UserForm2
リストはRowSourceです
text 個数
リンゴ ComboBox1
バナナ ComboBox2
イチゴ ComboBox3
メロン ComboBox4
…
すいか ComboBox99
CommandButton1
とあります
CommandButton1を押したら
リンゴ 空白
バナナ ComboBox2=4
イチゴ 空白
メロン ComboBox4=2
の時に
UserForm1
商品名 個数
ComboBox1=バナナ ComboBox11=4
ComboBox2=メロン ComboBox12=2
と詰めて入力がしたいです。
よろしくお願い致します
< 使用 Excel:Excel2007、使用 OS:Windows8 >
とりあえず、どうやってComboBoxに値をセットしていますか? その際、空欄だったらセットしないようなIf文を追加してはどうでしょうか?
(???) 2016/09/29(木) 15:50
どうもよくわからないので 整理させてください。
1.まず、実行環境としては UserForm1 と UserForm2 が ともに表示されていて UserFOrm2 での選択結果を UserFOrm1 に反映させる。この理解はあっていますか?
2.という理解の上で説明を読んだ時に、何か不思議なというか、不自然な感じがするんです。 私の理解が間違っていて、ごくごく自然な流れなのかもしれませんが。
3.非常に数多くのComboBoxを配置していますが、ComboBoxというものは、その中にリストがあって そのリストの中から何かを選ぶためのものですよね。選ぶべきものが、こんなにたくさんあるのですか? UserForm1 には 商品用に 9 つもComboBoxがあり、かつ、その名前用にも 9 つもComboBoxがある。 この 18個のCOmboBox は、何をするためのものなのか? 理解に苦しんでいます。 もしかしたら、これらは 18個のTextBox(値の変更がないのならLabel) でいいのかな? さらには 1個のListBox でいいのかなと思ったりするんですが・・・
4.UserForm2 の 説明ですけど
リンゴ 空白 って、どこの何がリンゴ で どこの何が 空白 なんですか? また、バナナ ComboBox2=4 って、何が バナナで 何が 4 なんですか?
★どうも、ComboBoxというものを根本的に勘違いしておられるような気がしてなりません。
(β) 2016/09/29(木) 15:57
1.理解はあっています UserForm1は請求書でして
リストはRowSourceです
UserForm1で商品名と個数を選びbookに反映させてます
ComboBox1〜ComboBox9には商品名
ComboBox11〜ComboBox19には個数が
ComboBox1の商品の個数がComboBox11です
新たにUserForm2を作成して
商品名一覧TextBoxの横にComboBoxで個数を入力して
商品を選択する手間を省こうと考えてます
Label1〜Label99の横にComboBox1〜ComboBox99があります
Label1 ComboBox1
Label2 ComboBox2
…
Label99 ComboBox99
Label1の個数がComboBox1です
よろしくお願いいたします
(俊) 2016/09/29(木) 16:51
>>リストはRowSourceです
わざわざ、こうレスしておられるその意図がわかりませんが(RowSOurceで規定してあろうがなかろうが、本件とは関係ありませんし、また質問もしていません) もしかしたら、すべてのCombBox のリストには同じものをセットしてあるといいたかった?
いずれにしても、私の 1. についてのみ返事をいただいたわけですね。
2.〜4. と ★ についてはいかがですか?
やりたいことって、商品をいくつか選択し、その個数も指定して、それを どこかのブックのどこかのシートに選択されたものだけを転記したい。
そういうことではないのですか?
もし、そうであれば、現在のユーザーフォームの構え、構造自体が 不自然だなぁと (いいかえると、その目的達成のために 俊さんが考えられた仕様がおかしい?)
もっと、簡単にすっきり制御できそうだなぁと とう思っているんです。
(β) 2016/09/29(木) 17:22
あぁ、もしかしたら・・・
すでに、請求書データを選択し請求書を作るための UserForm1 があって、それはそれで動いている。 でも、どうも、その選択が面倒な仕組み。
なので、別途、UserForm2 をつくり、そこで、「より簡単に」選択させ、それを、従来の UserForm1 に転記する。
そのあとは UserForm1 で 請求書作成処理を行いたい。
こんなことなんでしょうか?
それなら、わからないこともないですが、βなら
1.扱いにくい UserForm1 そのものを修正する。 2.UserForm1 のことは忘れて、新たに、別ブックで、最初から 簡単に選べて、簡単に請求書が発行できるマクロを作る。
いずれかでやりますねぇ。
(β) 2016/09/29(木) 17:27
コメントしたように、あまり感心しない方法だと思いますが、それはさておき。
USerForm2 では 99種類の選択が可能ですよね。 一方で UserForm1 で受け入れ可能な数は 9 種類までですね。
UserFOrm2 で 10種類以上の選択があったら、どうしますか?
それと、UserForm1 側の各COmboBoxにイベントプロシジャは書かれているということはありますか?
(β) 2016/09/29(木) 18:00
まぁ、とりあえず、想像ベースで。 UserFOrm2側のComboBoxのRowSOurceはComboBox1側と同じものが設定されているとして LabelのCaptionもUserFOrm1側の商品用ComboBoxのリストの値と同じものが設定されているという前提です。
でも・・・・ 99種類の名前をさがして、その場所のComboBoxで数字を選ぶんですよねぇ・・・ かえって、入力しづらいことになりそうな・・・
Private Sub CommandButton1_Click() Dim i As Long Dim x As Long
With UserForm1 For i = 1 To 9 .Controls("ComboBox" & i).Value = "" .Controls("ComboBox1" & i).Value = "" Next
For i = 1 To 99 If Me.Controls("ComboBox" & i).Value <> "" Then x = x + 1 If x > 9 Then MsgBox "選択されたデータが多すぎるのですべてを転記できません" Exit For Else .Controls("ComboBox" & x).Value = Me.Controls("Label" & i).Caption .Controls("ComboBox1" & x).Value = Me.Controls("ComboBox" & i).Value End If End If Next End With
End Sub
(β) 2016/09/29(木) 19:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.