エクセル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共動いて欲しいです。 宜しくお願い致します。
↧