- ベストアンサー
コンボボックスに○○○○年○月を表示させたい
オートフィルタの抽出条件に日付を指定したいのですが、 現状ではTextbox1に開始日yyyy/mm/dd、Textbox2に終了日yyyy/mm/dd と入力しています。 これを2008年1月、2008年2月・・・・と、 選択できるようにしたいです。 例えば、2008年6月を選択し場合、開始日2008/6/1、終了日2008/6/30 と出来るようにしたいのです。 どなたかコードのヒントをいただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1にコントロールツールボックスでコンボボックスを作成することを前提とします。 まず、コンボボックスへのデータセット用として Sub DataSet() Dim i As Integer Sheet1.ComboBox1.Clear For i = 0 To 60 Sheet1.ComboBox1.AddItem _ (Format(DateSerial(2008, 1 + i, 1), "yyyy年m月")) Next i End Sub これは2008年1月から60ヶ月分です。 次にオートフィルターですが、Sheet1のA列に日付が入力されていることを前提とします。 Sub DataSelect() Dim strDate As Date Dim endDate As Date strDate = DateValue(Sheet1.ComboBox1) endDate = DateSerial(Year(strDate), Month(strDate) + 1, Day(strDate)) - 1 Range("a1").AutoFilter _ Field:=1, _ Criteria1:=">=" & strDate, _ Operator:=xlAnd, _ Criteria2:="<=" & endDate End Sub 適宜必要な箇所は変更してください。
その他の回答 (1)
- wisemac21
- ベストアンサー率39% (171/429)
オートフィルタは「表示値」で抽出されます。 オートフィルタの日付の列の表示形式を「yyyy"月"/m"月"」に変更して、オートフィルタ矢印のリストから「2008年6月」を選択すれば抽出できます。 必要に応じて、表示形式で対応するのはどうですか?
お礼
ありがとうございました。 うまく動かすことが出来ました。