テキストボックスのデフォルト設定とコンボボックスの更新について
- ExcelのVBAを使用してユーザーフォームを作成しています。ユーザーフォームにはコンボボックスとテキストボックス、ボタンがあります。コンボボックスには13のリストがあり、初めに表示されるリストはAです。さらに、「次へ」ボタンと「戻る」ボタンを用意し、コンボボックスのリストの切り替え機能を実装しています。しかし、「次へ」ボタンを押した際に最後のリストを表示させる方法や、「戻る」ボタンを押した際に最初のリストを表示させる方法がわかりません。お知恵をお貸しください。
- ExcelのVBAを使ってユーザーフォームを作成しています。ユーザーフォームにはコンボボックスとテキストボックス、ボタンがあります。コンボボックスには13のリストがあり、初めに表示されるリストはAです。さらに、「次へ」ボタンと「戻る」ボタンを用意し、コンボボックスのリストの切り替え機能を実装しています。しかし、「次へ」ボタンを押した際に最後のリストを表示させる方法や、「戻る」ボタンを押した際に最初のリストを表示させる方法がわかりません。どなたかご教示いただけませんか?
- ExcelのVBAを使ってユーザーフォームを作成しています。フォーム内にはコンボボックスとテキストボックス、ボタンがあります。コンボボックスにはAからMまでの13のリストがあり、初めにはAが表示されています。また、「次へ」ボタンと「戻る」ボタンも用意しています。コンボボックスでAが選択された状態で「次へ」ボタンを押すとBが選ばれ、Dが選択された状態で「次へ」ボタンを押すとEが選ばれます。しかし、「戻る」ボタンを押した際にDが選ばれるようにする方法が分かりません。お知恵をお貸しください。
- ベストアンサー
テキストボックスのデフォルト設定とコンボボックスの更新について
テキストボックスのデフォルト設定とコンボボックスの更新について エクセルの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」が選ばれる。(リストの最後に戻る。) といった内容のマクロがうまく組めません。 教えていただけると助かります。
- donald1982
- お礼率41% (73/174)
- オフィス系ソフト
- 回答数2
- ありがとう数4
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
回答1、myRangeです。 >ちなみに、このVBAはどうやって覚えましたか? >あるいは、本などで調べられるものでしょうか。 ふつうComboBoxは質問のような使い方をしないので、 本にはそのものずばりというコードは載ってないでしょう。 VBAのヘルプをじっくり眺めて、プロパティ、メソッドなどの機能を いくつも試してみながらひとつひとつ理解していけば 時間は掛かるでしょうがどんなコードでも書けるようになります。 因みに、ひと月である程度のコードが書けるようになるには 以下のような手段で、日に4~5時間程度勉強をすればいいでしょう。 VBA専用サイト VBA専用Q&A VBAのヘルプ 参考書(入門編、応用編、各1~2冊) あとは、粘りと根性!! 以上です。
その他の回答 (1)
- myRange
- ベストアンサー率71% (339/472)
'-----リスト範囲は、Sheet1のA1~Aデータ最終行--------- Private Sub UserForm_Initialize() Dim LastRow As Long LastRow = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row With ComboBox1 .List = Sheets("Sheet1").Range("A1:A" & LastRow).Value .ListIndex = 0 '●最初の項目表示 End With End Sub '-------●次へ------------------------- Private Sub CommandButton1_Click() If ComboBox1.ListIndex = ComboBox1.ListCount - 1 Then ComboBox1.ListIndex = 0 Else ComboBox1.ListIndex = ComboBox1.ListIndex + 1 End If End Sub '------●前へ-------------------------- Private Sub CommandButton2_Click() If ComboBox1.ListIndex = 0 Then ComboBox1.ListIndex = ComboBox1.ListCount - 1 Else ComboBox1.ListIndex = ComboBox1.ListIndex - 1 End If End Sub '---------------------------------------------- 以上です。
お礼
無事にリストの更新が出来ました。 ありがとうございました。 ちなみに、このVBAはどうやって覚えましたか? あるいは、本などで調べられるものでしょうか。
関連するQ&A
- コンボボックスの自動更新について
コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。
- ベストアンサー
- オフィス系ソフト
- ExcelVBAでコンボボックスに初期値設定
ExcelVBAでユーザーフォームを作成しています。 表示したときにコンボボックスに「選択して下さい」と表示させる方法を教えて下さい。 コンボボックスで「2003年_H15」~「2012年_H24」が選択できて、選択するとラベルに「2002~2004年」のように表示されます。 【コンボボックス:選択】2003年_H15 【ラベル:表示】2002~2004年 コンボボックスの値はSheetから設定しています。 ユーザーフォームを表示させたときにコンボボックスに「選択して下さい」と初期値として設定するにはどうしたらよいか教えて下さい。 Sheetに追加するとかんたんなのですが、ラベルに表示させるために、以下のようなコードを書いていたりするので、うまく動きません。 Private Sub ComboBox_Change() Dim sh As Worksheet Set sh = Worksheets("Sheet1") With ComboBox If .ListIndex >= 0 Then Label.Caption = Left(sh.Cells(.ListIndex + 1, 1), 4) _ & "~" & Left(sh.Cells(.ListIndex + 3, 1), 4) & "年" End If End With End Sub よろしくお願い致します。
- 締切済み
- Visual Basic
- 同じコンボボックス、リストボックスを使うには?
よろしくお願いします。 今、ユーザーフォームを使って製造計画表を作っています。 コンボボックスで会社名、リストボックスで会社ごとの製品名を選択させるとこまで出来ました。 1日に3つの製品を作ることが出来るので、同じ中身のコンボボックス、リストボックスを使って3つ作りたいと思っています。 ユーザーフォームの形的にはこのような感じですが。 1. コンボボックス リストボックス 2. コンボボックス リストボックス 3. コンボボックス リストボックス 今は、1.のとこだけは出来たのですが、2.3.は1.と同じコードをコピーして必要と思われるとこだけをコンボボックス2と変えたりしてみたのですが、上手くいきませんでした。こんなコードですが。 Private Sub UserForm_initialize() 'ComboBox1セット Dim ico As Long ico = 1 With ThisWorkbook.Worksheets("Sheet1") Do While .Cells(1, ico) <> "" Me.ComboBox1.AddItem .Cells(1, ico).Value ico = ico + 1 Loop End With Me.ComboBox1.SetFocus End Sub Private Sub ComboBox1_Change() 'ListBox1セット Dim ico As Long 'Me.ListBox1.Clear ico = Me.ComboBox1.ListIndex + 1 With ThisWorkbook.Worksheets("Sheet1") Me.ListBox1.List = .Range(.Cells(2, ico), _ .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value End With End Sub VBAも初めたばかりで質問の内容もわかりづらいとも思いますが、よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- コンボボックスからテキストボックスに連続して値を出したい
エクセルVBAのユーザーフォームで、コンボボックスで選択したものをコマンドボタンを押すことで、同じフォーム上のテキストボックスに表示するところまではできたのですが、同じテキストボックスに追記する形でコンボボックスで選択したものを表示したいのですが、可能でしょうか。テキストボックスは複数行表示できるようにプロパティのMultiLineはTlueに設定することはしたのですが、2回目以降コンボボックスで選択した後コマンドボタンを押してもそのまま上書きするようなコードしかわかりません。 テキストボックスに、20回目まで選択項目を追加表示し、最後にはエクセルのシートにそのデータをコピーしたいのです。果たして、そのようなことは可能でしょうか。可能であればどのように記述すればよいのでしょうか。ぜひ諸先輩方のお知恵をお貸しください。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA コンボボックスで選んだ値を取得するには
ユーザーフォーム上のコンボボックスから値を選択し、その値を変数として使いたいのですが、うまくいきません。 コンボボックスのコードで Private Sub ComboBox1_Change() moji1 = ComboBox1.Text Range("A1").Value = moji1 のようにすれば、コンボボックスから値を選んだ時点でA1セルにその値をコピーできるのですが、同じユーザーフォーム上にあるコマンドボタンをクリックして実行する「マクロ1」にてこのmoji1という変数を使いたいのです。 マクロ1にて、上記と同じ Range("A1").Value = moji1 というコードを記述しても、ユーザーフォームで選択した値が消えており、empty値となってしまいます。 原因をご存知の方はお教えください。
- ベストアンサー
- その他MS Office製品
- コンボボックスの開いたリストを閉じるには
コンボボックスのリストを開くのはComboBox1.DropDownでできますが、閉じるのはどういう風にやればいいでしょうか。 今ユーザーフォームで Private Sub Combobox1_Change() ComboBox1.Clear v = ComboBox1.Text For i = 1 To 300 c = Worksheets("Sheet1").Cells(i, "A") If v = Left(c, Len(v)) And Len(v) > 0 Then ComboBox1.AddItem c End If Next i ComboBox1.DropDown End Sub と言う風にしていますが、リストを開きっぱなしだと変な表示になってしまい、マウスクリックで一旦閉じてから開かないと変な表示になってしまうのです。 そこで一旦リストをマクロで閉じさせてから再び開きたいのですが、どうすればいいでしょうか。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAのユーザーフォームのコンボボックス
エクセルVBAのユーザーフォームのコンボボックスの入力と ファイルの保存で質問です。 エクセルVBAで ユーザーフォームのコンボボックスを使用して 1月から12月までを選択してもらい、 選択した月を コマンドボタン押した際に、 セルにその値を入力するような マクロを作成しようとしています。 またコンボボックスは標準で6月が表示されるようにしたいと思います。 ユーザーフォームのコードの一部です。 Private Sub UserForm_Initialize() Dim m As Integer For m = 1 To 12 UserForm1.ComboBox1.AddItem m Next ComboBox1.ListIndex = 6 Private Sub CommandButton1_Click() 'ユーザーフォームを閉じる Unload UserForm1 mold '↑フォームを閉じた後に実行される標準モジュールのマクロ名です End Sub 標準モジュールのコード 名称 「mold」 Sub mold() ActiveWorkbook.SaveAs _ Filename:="C:\_" & UserForm1.ComboBox1.Text & "月", _ FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close ThisWorkbook.Activate ' End Sub の様に作成して実行してみたのですが、 コンボボックスで11月を選択しても 6月のままのファイルになってしまいます。 どのようにしたら、 コンボボックスで選択した値を ファイル名として保存できるでしょうか? 全部のコードを記載しますと 長くなってしまうと思い、 関連するコードを記載して質問しました。 分かりづらい所もあるかと思いますが よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- コンボボックスで2週間前までの日付を選択したい
VBA 初心者です。 ユーザーフォーム コンボボックスに 今日から2週間前までの日付を選択できるようにしたいです。 現在、 試行してもコンボボックスには何も表示されません。 ご教授願います。 Private Sub Form_Load() Dim i As Integer For i = 0 To 14 ComboBox5.AddItem Format(Date - i, "yyyy-mm-dd") Next ComboBox5.Text = ComboBox5.List(0) End Sub
- 締切済み
- オフィス系ソフト
- VBAコンボボックスについて
初歩的な質問ですが もしコンボボックスで1行目を選べば~をする。 2行目を選べば~をする。といったマクロを考えています。 if combobox1.listindex=1 と記入するだけでは機能しません。 with combobox.listindex=1 とすると機能しますがwithを文頭に入れるとifが使えないため条件で項目を分けれませんが、どういった表現に変えたらよいでしょうか?
- ベストアンサー
- Excel(エクセル)
- Excel コンボボックス2つ以上の時のコード
ユーザーフォームでコンボボックスを2つ作ったのですが、1つだけのときはうまくいったのですが、二つ目をつくったら、エラーが出てしまいました。 コード入力は、Initializeに入力してあります。 Private Sub UserForm_Initialize() ComboBox1.Style = fmStyleDropDownCombo ComboBox1.RowSource = "sheet1!F2:F7" ComboBox1.ListIndex = -1 End Sub Private Sub UserForm_Initialize() ComboBox2.Style = fmStyleDropDownCombo ComboBox2.RowSource = "sheet2!B2:B3" ComboBox2.ListIndex = -1 End Sub コンボボックス1だけはうまくいったのですが、コンボボックス2をつくったら名前が適切でありませんとエラーがでました。 どのようにしたらいいですか?教えてください。
- ベストアンサー
- オフィス系ソフト
お礼
VBAは、そう簡単にマスター出来るわけではないのですね。 コツコツと学習していきます。 ありがとうございました。