• 締切済み

ComboBoxについておしえてください。

1.ComboBox1.Clear 2.ComboBox1.AddItem "あああ" ComboBox1.AddItem "いいい" ComboBox1.AddItem "ううう" コーディングしたのですが、text部分をクリックすると  入力でき内容訂正できてしまうのですが?  上記内容で あああ・いいい・うううの選択しかできないように  したいのですが、どうすればいいのか教えてください。  できれば、下向きの三角印のとこをクリックすると       あああ・いいい・うううの選択画面が表示して       選択できますよね。       これと同じようにtext部分をクリックしても       おなじようにしたいのですが  よろしくお願いします。          

みんなの回答

  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

コンボボックスのStyleプロパティをいじってみてください。次々と形が変わりますよ。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

回答ははっきり言いませんが、一通りコンボボックスのプロパティを触ってみてください。

関連するQ&A

  • Comboboxのデータを入れ替えたいが一部残ってしまう

    OS:WinXP-Home Office:Excel2000 を使用して、VBAの入力フォームを作成しています 3つのCombobox(オブジェクト名を「Data○」と命名:○には数字が入ります)を使い 1つ目のComboboxが選択されると 2・3個目のComboboxにデータが入るようにしたいのですが 以下のソースで不具合が出ましたのでお知恵を貸してください Private Sub UserForm_Initialize() Data1.AddItem "A" Data1.AddItem "あ" End Sub Private Sub Data1_Change() Dim i As Integer Dim j As Integer For j = 2 To 3 For i = 1 To Controls("Data" & j).ListCount Controls("Data" & j).RemoveItem 0 Next i Next j Select Case Data1.ListIndex Case 0 For j = 2 To 3 Controls("Data" & j).AddItem "A" Controls("Data" & j).AddItem "B" Controls("Data" & j).AddItem "C" Next j Case 1 For j = 2 To 3 Controls("Data" & j).AddItem "あ" Controls("Data" & j).AddItem "い" Controls("Data" & j).AddItem "う" Controls("Data" & j).AddItem "え" Controls("Data" & j).AddItem "お" Next j End Select End Sub これを実行した時に、 例えば2・3個目のComboboxを何も選択していない状態で 1つ目のComboboxを操作すると問題なくデータが開放されて 新たに入ります ですが、例えば 1個目:"あ" 2個目:"え" などの選択された状態で1個目を"A"に変えると 2個目のリストには "お" "A" "B" "C" となるケースがあります(毎回ではありません) Removeitemをする部分で調べてみたところ、うまくいかない時は 内側のiのループで Controls("Data" & j).ListCountの値は正常なのに 実際のループでは選択しているListindexで ループから抜けてしまっていました ソース上では問題ないので、どこを修正したらよいか分かりません よろしくお願いします

  • エクセルVBA コンボボックスの値の転記

    エクセルVBAの質問です。 ユーザーフォームを表示し 年を選択するコンボボックス1 月を選択するコンボボックス2 を入力してもらい ユーザーフォームを閉じるときに sheet1のワークシートのC2セルに 「コンボボックス1の値」+「年」+と「コンボボックス2の値」+「月」をつなげて 入力できるというようなマクロを考えています。 下記の様に考えてみたのですが、 うまく入力できませんでした。 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "2021" .AddItem "2022" .AddItem "2023" .AddItem "2024" End With With ComboBox2 .AddItem "1" .AddItem "2" .AddItem "3" .AddItem "4" .AddItem "5" .AddItem "6" .AddItem "7" .AddItem "8" .AddItem "9" .AddItem "10" .AddItem "11" .AddItem "12" End With Private Sub CommandButton1_Click() 'ユーザーフォームを閉じる Unload UserForm1 'ユーザーフォームの値をセルC2に入力 With Worksheets("sheet1") .Cells(2, 3).Value = "ComboBox1.Text" & "月" & "ComboBox2.Text" & "日" End With End Sub どのように修正すればいいでしょうか? よろしくお願いします。

  • VBAのComboBoxについて

    UserForm1にComboBoxが8個(ComboBox1~8)あります。 各ComboBoxはSheet1の下記列に入力されているリストを表示します。 ComboBox1 : A列 ComboBox2 : B列 ComboBox3 : C列 ComboBox4 : D列 ComboBox5 : E列 ComboBox6 : F列 ComboBox7 : G列 ComboBox8 : H列 ComboBox9 : I列 ComboBox10 : J列 そこで、UserForm1の各ComboBoxでデータ選択する際に、リストにある場合はそれを選択し、リストにない場合はComboBoxに新しいデータを入力し、UserForm1のCommandButton1を押下時にその新しいデータをSheet1の各列に追加したいのですが、どのようにしたらよいのでしょうか。 Sheet1にあるリストをComboBoxに表示するところまではできています。 ※ComboBoxの番号とリストの列番号を一致させています。 --------------------------------------------------------------- Private Sub UserForm_Initialize() Dim lastrw As Integer, retu As Integer, i As Integer For retu = 1 To 10 lastrw = Sheet1.Cells(1, retu).End(xlDown).Row For i = 1 To lastrw - 1 Controls("ComboBox" & retu).AddItem Sheet1.Cells(i + 1, retu).Value Next i Next retu End Sub ---------------------------------------------------------------

  • コンボボックスのクリア方法について教えて下さい(vb6.5)

    コンボボックスのクリア方法について教えて下さい(vb6.5) ComboBox1で選択したものによって、 ComboBox2で表示するものを変えたいと思っています。 ただ、一度ComboBox1で選択した後にComboBox2を開くと、 ComboBox2は前回のものがどんどん足されていきます。 コンボボックスのクリア方法について、 どの様にすればよいかご教示のほど、 宜しくお願い致します。 Private Sub ComboBox1_Change() UserForm1.ComboBox2.RemoveItem (0) If ComboBox1.Text = 1 Then UserForm1.ComboBox2.AddItem "A" UserForm1.ComboBox2.AddItem "B" UserForm1.ComboBox2.AddItem "C" ElseIf ComboBox1.Text = 2 Then UserForm1.ComboBox2.AddItem "D" UserForm1.ComboBox2.AddItem "E" UserForm1.ComboBox2.AddItem "F" Else UserForm1.ComboBox2.AddItem "G" UserForm1.ComboBox2.AddItem "H" UserForm1.ComboBox2.AddItem "I" End If End Sub -------------------------------------- Private Sub UserForm_Initialize() UserForm1.ComboBox1.AddItem "1" UserForm1.ComboBox1.AddItem "2" UserForm1.ComboBox1.AddItem "3" End Sub

  • EXCEL VBA コンボボックスでのLISTINDEXの値

    初めて質問させていただきます。 EXCEL VBAでコンボボックスを設定したときのLISTINDEXの値についてですが、 コンボボックスがフォーム内に3つ(ComboBox1,2,3)あり、次のようなコードの入力を行い、 ComboBox1 Sub Userform_Intialize()  With CcomboBox1   AddItem"AAA" '・・・ここの値は0ですね   AddItem"BBB" '・・・ここの値は1ですね  End With End Sub sub ComboBox1_Change()  Me.combobox2.Clear  Select Case Me.ComboBox1.ListIndex   Case 0   Me.ComboBox2.AddItem "2AAA" '・・・ここの値は0ですね    Me.ComboBox2.AddItem "2BBB" '・・・ここの値は1ですね   Case 1   Me.ComboBox2.AddItem "2CCC" '・・・ここの値は何になりますか?   Me.ComboBox2.AddItem "2DDD" '・・・ここの値は何になりますか?  End Select End Sub このcombobox2の4つの項目から、 更にcombobox3の選択項目に分岐するように設定したいのです。 わかりやすいように、ComboBox3もComboBox2のように作成したいのですが、 このように入力した場合、ComboBox2で"2CCC"を選択した場合、 ListIndexの値が2ではないようなのです。 この"2CCC"と"2DDD"のListIndex値はいくつになるのでしょうか? どなたか教えて下さい。

  • エクセルVBAでコンボボックス(2)

    少し前に次の質問をしました。 http://okwave.jp/qa/q6703161.html 前回の質問は、エクセルシート上に置いたコンボボックスに初期値として リストを表示させたいという内容です。(セル上の値を持ってくるのではなくて) この質問は以下のコードで解決したとお礼欄に書きました。 Private Sub ComboBox1_DropButtonClick() ComboBox1.Style = fmStyleDropDownList ComboBox1.Clear ComboBox1.AddItem "りんご" ComboBox1.AddItem "ばなな" ComboBox1.AddItem "みかん" End Sub ユーザーは、リストから選ぶときに、DropButtonをクリックします。そのときに コードに記述したリストがリストに入力されるという仕組みです。 さて、これを実際に動かしてみると、リストが表示されるのはいいのですが、 目的のものをクリックしても、選ばれた状態になりません。 動作詳細説明: ドロップボタンをクリックすると、コンボボックスからべローンとリストが表示されます。 たとえば、ばななを選択しようとしてばななをクリックします。その瞬間表示された リストは消えますが、コンボボックスには何も選択されていない状態になってしまいます(空欄)。 本来ならば、ばななが表示されなければなりません。 ただし、ドロップボタンでリストを表示させずに、キーボード矢印キーでリストを順番に 表示させると、選択状態にすることはできるようです。 コード中の ComboBox1.Clear を書かないと、上記のような現象は起きませんが、ドロップボタンを押すたび、設定したリストが 無駄に追記されていってしまいます。 どのようにしたら良いのでしょうか

  • ComboBox1_Changeについて

    Private Sub ComboBox1_Change() Dim si As Integer With UserForm1 .ComboBox2.Text = "" si = .ComboBox1.ListIndex ' ComboBox1 の何番目が選択されたかを得る Select Case si Case 0 ' 0番が選択されていたらComboBox2 の内容をC列から作成する .ComboBox2.RowSource = "Sheet1!C1" Case 1 .ComboBox2.RowSource = "Sheet1!C2" End Select End With End Sub コンボボックス1で選択された値に対して『Sheet1!C1』が 表示されるようにするには、『.RowSource』の部分に 適切な言語がありますでしょうか。 また、『.RowSource』は、こういう効果がある等 紹介しているサイトをご存知あれば教えてください。 (探してみたのですが、めぐり合えず)

  • comboboxの選択

    こんにちわ、よろしくお願いします。 WinXP VB6.0 oracle10g使用 comboboxとTextBoxと連動したいと思っています。 担当者のデータ コード、名前  1   山田  2   佐藤 3   足立 55   安藤 999 不明 とあるのですが、TextBoxに"3"と入力したら (Text1_LostFocusイベントでやってみました) comboBoxは"安藤"と出るように(選択状態)したいと思っています。 ListIndexでやってみましたが、コードが必ずしも順番に入っている状態ではないので困っています。 (DBからよんでくる時、FORM_LOADイベントでも実行したいです。) よろしくお願いします。

  • エクセル VBA if構文

    毎度お世話になります。 下記プログラミングですが、 シャーペンまたはボールペンがコンボボックス1で 選択された場合はコンボボックス2で10束または50束の選択肢となり 消しゴムまたはシャー芯がコンボボックス2で 選択された場合はコンボボックス2で100コまたは1000コの選択肢としたいのですが 他の方法がありますでしょうか。 宜しくお願い致します。 If Me.ComboBox1.Value = "シャーペン" Or Me.ComboBox1.Value = "ボールペン" Then ComboBox2.Style = fmStyleDropDownCombo ComboBox2.RowSource = "" ComboBox2.Clear ComboBox2.AddItem "10束" ComboBox2.AddItem "50束" ComboBox2.ListIndex = -1 End If If Me.ComboBox1.Value = "消しゴム" Or Me.ComboBox1.Value = "シャー芯" Then ComboBox2.Style = fmStyleDropDownCombo ComboBox2.RowSource = "" ComboBox2.Clear ComboBox2.AddItem "100コ" ComboBox2.AddItem "1000コ" ComboBox2.ListIndex = -1 End If

  • VB.2010 ComboBox 項目選択

    Builder C++ではかなりのプログラムを作成していますが、拠点でプログラムを変更出来る様にVBでプログラムを作成し直しているVBに関してはほぼ初心者です。 VBでComboBoxを使用して内容を選択させようとして居ます。 プログラムの最初でComboBoxのTextに初期値(前回選択値)を設定して居ます。 ComboBoxで選択された内容はComboBoxの内容が変更された時に次回プログラム実行時の初期表示の為にiniファイルに書き込みをして居ます。 問題はプログラムの最初に初期値を書き込んだ時にもComboBoxの内容が変更される為、内容変更の割り込みが入り、iniファイルの書き込みルーチンが動作してしまう事です。 ComboBoxのTextの書き込の時に割り込みをしなくて、選択をした時のみ割り込みが発生する割り込みがあると良いのですが、調べた範囲では無い様でした。 Builder C++ではMouseUPイベントの割り込みを使って同じ機能を実現させたのですが、VBのMouseUpイベントでは一つ前に選択された内容しか入って来て居ない様です。 MouseUpのイベント割り込み先には以下のコーディングをして居ます。 Private Sub ComboBox1_MouseUp(ByVal sender・・・・・ Label1.Text = ComboBox1->Text End Sub しかし、これだと選択した時は前回選択された内容が表示されてしまいます。 当然 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender ・・・ Label1.Text = ComboBox1->Text End Sub の場合は選択された内容が表示されます。 双方共、実行後のComboBox自体の表示内容は選択されたものになって居ます。 MouseUpのイベントの時にも選択された内容が表示されれば、このイベントでは ComboBox1->Text 初期値を設定した時はイベントが発生しないので都合が良いのですが、一つ前に選択された内容しか表示されません。 MouseUpの時には未だ内部処理が終了していないので新しい内容が表示出来ないのでしょうか。 Builder C++ には Application->ProcessMessages()と言う、他のタスクを先に実行させる関数がありますが、多分VBにもその様な関数があると思いますので、それを挿入すれば最新の状態を入手できるものでしょうか。 上記目的を達成出来る方法はありますでしょうか。 無ければフラグを使用して、ComboBox1->Text に初期値を設定した時には割り込み先でiniファイルの書き込みをしない様にプログラムする予定です。 当然、初期値を表示して居るのですから初期値設定時に再度iniファイルに書き込みがあっても問題は無いのですが、実際には動作していけないプログラムを書きますので、初期値書き込み時には割り込みが無い様にしたいのです。 VBでの処理方法がありましたらお教え下さい。宜しくお願い致します。