エクセル2007のVBAでオートフィルタのチェック
エクセル2007のVBAでオートフィルタのチェックを特定の日付のみに入れたいのです。
(同様の質問をしておりますが、質問の意図が伝わらなかった、意味不明だったのか、ご検討中なのか、こちらで再度質問させて頂きます。)
ユーザー設定フィルタでは視覚的に解りつらい為、フィルタの▽をクリックした時に、チェックがされている事を確認したいのです。
【シート1の内容】
セルA1から行方向に数字の1~4
セルB1から行方向に、日付、値1、値2、% ’日付は過去1年~未来1年分です。
セルA3から列方向に、書式は yyyy/m/d
セルB3とC3から列方向に、ランダムな整数
セルD3から列方向に、“=B3/C3”が入力されており、書式は パーセンテージ(小数点以下の桁数は“1”)
セルF2に 2012(年)、セルG2に 9(月)、セルH2に 閾値として 10.5%
【目的】
動きとしては、過去1年前~2012年9月末日までのデータの内、閾値以上の結果を出すつもりで書きました。
【質問】
フィルタがかかった▽をクリックした時に、指定した範囲の日付チェックボックスにチェックを入れたいのです。
試行錯誤の状態のコードで失礼します。
Selection.AutoFilter Field:=1, Criteria1:=Array("日付"), Operator:=xlFilterValues, _
Criteria2:=Array(buf)
この部分のbufの記述方法が、わかりません。
Sub Sample1()
Dim TargetDate As Date
Dim YY As Integer
Dim MM As Integer
Dim DD As Date
Dim EoD As Integer
Dim MaxRow As Integer
Dim i As Integer
Dim buf As Variant
Selection.AutoFilter
YY = ActiveSheet.Range("F2").Value
MM = ActiveSheet.Range("G2").Value
DD = YY & "/" & MM & "/1"
EoD = Day(DateAdd("d", -1, DateAdd("m", 1, DD)))
MaxRow = Range("A1").End(xlDown).Row
TargetDate = YY & "/" & MM & "/" & EoD
'TargetDate = Format(YY & "/" & MM & "/" & EoD, "m/d")
'TargetDate = DateValue(YY & "/" & MM & "/" & EoD)
'MsgBox TargetDate
For i = 3 To MaxRow
With Worksheets("Sheet1").Cells(i, 4)
.Activate
.FormulaR1C1 = "=R[-0]C[-2]/R[-0]C[-1]"
.Style = "Percent"
.NumberFormatLocal = "0.0%"
End With
Next i
buf = ""
For d = 0 To 365
' If d = 0 Then
' buf = "2, " & """" & TargetDate - d & """"
' ElseIf d >= 1 Then
' buf = buf & ", 2, " & """" & TargetDate - d & """"
' End If
' If d = 0 Then
' buf = "2, " & """" & Format(TargetDate - d, "m/d/yyyy") & """"
' ElseIf d >= 1 Then
' buf = buf & ", 2, " & """" & Format(TargetDate - d, "m/d/yyyy") & """"
' End If
'buf = buf & " 2, " & """" & Format(TargetDate - d, "yyyy/m/d") & """"
'buf = buf & " 2, " & """" & DateValue(TargetDate - d) & """"
'buf = buf & "2, " & """" & DateValue(TargetDate - d) & """"
'If d <> 365 Then
' buf = buf & """" & DateValue(TargetDate - d) & """" & ", "
'Else
' buf = buf & """" & DateValue(TargetDate - d) & """"
'End If
If d <> 365 Then
buf = buf & """" & TargetDate - d & """" & ", "
Else
buf = buf & """" & TargetDate - d & """"
End If
'Range("N1") = buf
Next d
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=Array("日付"), Operator:=xlFilterValues, _
Criteria2:=Array(buf) 'ここでエラーを検出してます。
'Criteria2:=Array(2, "2012/3/5", 2, "2012/08/11", 2, "2014/5/6")
End Sub
皆様、良いお知恵をお貸し下さい。。。
OSは、WinXPとWin7共動いて欲しいです。
宜しくお願い致します。