• ベストアンサー

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/17069)
回答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