- ベストアンサー
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・・・ができなくて困っています。 どうしたら選択表示された状態になるのでしょうか? ご存知の方、教えてください。
- みんなの回答 (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
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
下記でどうですか。毎月の月末日のセットは全月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
お礼
回答ありがとうございました。 結構簡単なことだったんですね(って教えてもらって失礼な事を・・・スミマセン)。 Selected出来るハズだ!と思い込んでいたので 教えてもらわないとわかりませんでした。 ASPだとif i=m then <option ... selected>と出来るのに Excelだと指定しないと出来ないんですね。 不便だ・・・。 ありがとうございました! また機会がありましたらよろしくお願いします(ペコリ)。
お礼
回答ありがとうございました。 最初"Month(Now())-1"の部分でなぜ-1?と不思議だったのですが、 ListIndexのプロパティを調べてわかりました。 配列のように0から始まるんですねぇ。 (っちゅうか、それが普通なんですかね?) ASP等でSelectedが使えるのでExcelでも・・・、と思い込んでいました。 ありがとうございました。 また機会がありましたら、よろしくお願いします(ペコリ)。