• ベストアンサー

ComboBoxであらかじめ選択

いつもお世話になっています。 Excelファイルから年月日を入力し、帳票を出力するマクロを作っています。 月と日はコンボボックスからの選択とさせるため    Private Sub Workbook_Open()     Dim i As Integer    'カウンタ     For i = 1 to 12        Sheet1.ComboBox1.AddItem(i)     Next i    End Sub と記述したのですが、起動時にすでに現在月と現在日が 選択されているようにした方が使い勝手が良いと思いました。 (例:7月25日にExcelを立ち上げるとコンボボックスの値は7月25日) が、NowMonth = Format(Date, "m")で現在月を取得し i=NowMonthの時Selected・・・ができなくて困っています。 どうしたら選択表示された状態になるのでしょうか? ご存知の方、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

コンボボックスの場合は、ListIndexプロパティを操作すればいいでしょう。 Selectedプロパティは、ListBoxでMultiSelectになっている時などに使います。 こんな感じでしょうか。 Private Sub Workbook_Open()   Dim i As Integer 'カウンタ   With Sheet1     '月     For i = 1 To 12       .ComboBox1.AddItem i     Next     .ComboBox1.ListIndex = Month(Now()) - 1     '日     For i = 1 To 31       .ComboBox2.AddItem i     Next     .ComboBox2.ListIndex = Day(Now()) - 1   End With End Sub

lovelypooh
質問者

お礼

回答ありがとうございました。 最初"Month(Now())-1"の部分でなぜ-1?と不思議だったのですが、 ListIndexのプロパティを調べてわかりました。 配列のように0から始まるんですねぇ。 (っちゅうか、それが普通なんですかね?) ASP等でSelectedが使えるのでExcelでも・・・、と思い込んでいました。 ありがとうございました。 また機会がありましたら、よろしくお願いします(ペコリ)。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

下記でどうですか。毎月の月末日のセットは全月31日で、手を抜いていますが、取り急ぎでお許し下さい。 Private Sub Workbook_Open() Dim i As Integer 'カウンタ For i = 1 To 12 Sheet1.ComboBox1.AddItem (i) Next i '----- For i = 1 To 31 Sheet1.ComboBox2.AddItem (i) Next i '----- m = Month(Now()) d = Day(Now()) ' MsgBox d '----- Sheet1.ComboBox1.Text = m Sheet1.ComboBox2.Text = d 'Sheet1.ComboBox2.Value=d でも良さそう End Sub

lovelypooh
質問者

お礼

回答ありがとうございました。 結構簡単なことだったんですね(って教えてもらって失礼な事を・・・スミマセン)。 Selected出来るハズだ!と思い込んでいたので 教えてもらわないとわかりませんでした。 ASPだとif i=m then <option ... selected>と出来るのに Excelだと指定しないと出来ないんですね。 不便だ・・・。 ありがとうございました! また機会がありましたらよろしくお願いします(ペコリ)。

関連するQ&A

  • コンボボックスで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

  • Excel VBのComboBoxで横一列の選択

    日程表マクロを作っています。セルのC3からAG3の横列31個のセルに1日から31日までの日付を作成してあります。 コンボボックス5で日付選択をしたいので、この列を参照したいと考え、下記のプログラムを作成しました。実行すると「コンパイルエラー」、参照されません。 Private Sub ComboBox5_Enter() ComboBox5.ColumnSource = "C3:AG3" ’ComboBox5をActiveSheetに変更するとサポートされず。 End Sub マクロで With ComboBox5 .AddItem"1" .AddItem"2" : .AddItem"31" ではなくてRowSourceに代わる指定セル範囲の横列参照はできないのでしょうか? あるいはもっとスマートな指令方法があれば教えてください。 Excel2007 VB6.5です。

  • EXCEL VBAで、日付の後に曜日を追加する方法について

    EXCEL VBAの日付の機能のことで教えていただきたいことがあります。    A列 1行:2008/02/01 2行:2008/02/03 3行:2008/02/04  ・  ・ コントロールツールボックスでコンボボックスをシートに挿入 Private Sub Workbook_Open() With ComboBox1 .AddItem Range("A1") .AddItem Range("A2") .AddItem Range("A3")     ・     ・ End With End Sub コンボボックスには「2008/02/01」等と表示されたリストが表示されると思いますが、 選択した後の値を「2008/02/01(月)」というように、 日付の後に曜日を追加して表示させるにはどのような処理をしたらよろしいでしょうか。 Private Sub ComboBox2_Change() ComboBox2 = ? End Sub というようなやり方かとは思うのですが、具体的なコードがさっぱり思い浮かびません。 どうぞよろしくお願いいたします。

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

    エクセル2002使用です。 生年月日とかを入力できるコンボボックスを作っているのですが、同じコンボボックスを5つ作ろうとしています。例えば和暦を入力するには Private Sub userform_initialize() With ComboBox(1) .AddItem "昭和" .AddItem "平成" End sub でうまくいくのですが、2個目から5つ目まで同じものを作成する場合、 With ComboBox(2) ・・・ With ComboBox(3) ・・・ と、コードを記述していかないと駄目なのでしょうか? できれば With ComboBox(1: 5) とか、 変数を使って Private Sub userform_initialize() Dim i As Integer For i = 1 To 5 With ComboBox(i) .AddItem "昭和" .AddItem "平成" End With Next End sub といった具合にまとめたいのですが、コンパイルエラーとなってしまいます。 初歩的な質問で申し訳ないのですが、よろしくお願いします。

  • Excel VBAでコンボボックスで選択

    コンボボックスで選択したいと思っていますがうまくいきません。 教えてください。 Private Sub userform_initialize()  With ComboBox2   .Font.Size = 12   .AddItem "A"   .AddItem "B"   .AddItem "C"  End With If ComboBox2 = "A" Then  With ComboBox3   .Font.Size = 12  .AddItem "a-1"  .AddItem "a-2"  End With ElseIf ComboBox2 = "B" Then With ComboBox3   .Font.Size = 12  .AddItem "b-1" .AddItem "b-2" End With Else: ComboBox2 = "C" With ComboBox3 .Font.Size = 12 .AddItem "c-1" .AddItem "c-2" End With End If End Sub コンボボックス2で"A"を選んだら、コンボボックス3には"a-1とa-2"の選択したい のですが、"c-1,c-2"しかでません。よろしくお願いします。

  • エクセル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 どのように修正すればいいでしょうか? よろしくお願いします。

  • オプションボタン選択でコンボボックス有効

    ExcelVBAでユーザーフォームを作成しているのですが、昨日までうまく動作していたことが、突然動かなくなりました。 オプション1を選択 ↓ コンボボックス1有効  ※他のコンボボックスは無効 ↓ オプション2を選択 ↓ コンボボックス2有効  ※コンボボックス1も含め他のコンボボックスは無効 という感じで動作させたいです。 書いたコードはこんな感じです。 Private Sub OptionButton1_Click () Dim i As Long Dim lastRow As Integer lastRow = Cells(Row.Count, 1).End(xlUp).Row If OptionButton1.Value = True Then OptionButton1.Enabled = True With ComboBox1 If ComboBox1 = "" Then For i = 2 To lastRow .AddItem Worksheets("sheet1").Cells(i, 1).Value Next i End If End With ComboBox1.ListIndex = 0 ComboBox2.Enabled = False ComboBox3.Enabled = False End If End Sub コードの間違いや改善点などありましたら教えて下さい。 よろしくお願いします。

  • 同じコンボボックスを二つ以上作る方法

    今同じ内容を表示するコンボボックスを二つ作ろうと思っているのですがつくり方がわかりません。 どのようにすれば一つのプログラムで二つのコンボボックスを作れるのでしょうか 例: 表示では はい いいえ プログラム: Private Sub UserForm_Initialize() ComboBox1.AddItem "はい" ComboBox1.AddItem "いいえ" End Sub Private Sub UserForm_Initialize() ComboBox2.AddItem "はい" ComboBox2.AddItem "いいえ" End Sub ↑のような作り方ではなく簡略化して Private Sub UserForm_Initialize() ComboBox●.AddItem "はい" ComboBox●.AddItem "いいえ" End Sub ●部を変更できれば一つのプログラムでコンボボックスを2つ操作できると思うのですがどのようにすればよろしいでしょうか?

  • コンボボックスのクリア方法について教えて下さい(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

  • エクセル 複数のComboBoxの連携

    エクセルでフォームを使い、社内各部署での案件の一覧の検索データベースを作成中です。 その際、ComboBoxを3つ使い、1「支店名」2「課名」3「チーム名」を選択するようにしたいのですが、支店により課名やチーム名が異なるため、1で選択した支店名と合致する課やチーム名が選べるようにしたく、以下のようなマクロを組みました。が、実行すると、支店名は表示されるものの、何故か選択できません。また、2つ目(課)の結果から3つ目(チーム名)も得る方法もいまいちよくわかりません。ご教示お願いいたします。 Option Explicit Private Sub ComboBox5_Change() Dim si As Integer With UserForm1 .ComboBox5.Text = "" si = .ComboBox5.ListIndex Select Case si Case 0 .ComboBox6.AddItem "A課" .ComboBox6.AddItem "B課" .ComboBox6.AddItem "C課" 以下必要分続く ’ComboBox6の結果から7を得るには? End Select End With End Sub Private Sub UserForm_Initialize() ' ComboBox がアクティブの時の処理 With UserForm1 .ComboBox5.AddItem "A支店" .ComboBox5.AddItem "B支店" .ComboBox5.AddItem "C支店" .ComboBox6.AddItem "A課" .ComboBox6.AddItem "B課" .ComboBox6.AddItem "C課" .ComboBox7.AddItem "Aチーム" .ComboBox7.AddItem "Bチーム" .ComboBox7.AddItem "Cチーム" End With End Sub

専門家に質問してみよう