エクセル2007のVBAで特定の日付のみにオートフィルタのチェックを入れる方法

このQ&Aのポイント
  • エクセル2007のVBAでオートフィルタのチェックを特定の日付のみに入れる方法を教えてください。
  • ユーザー設定フィルタでは視覚的に解りつらい為、フィルタの▽をクリックした時に、チェックがされている事を確認したいです。
  • 試行錯誤の状態のコードで失礼します。Selection.AutoFilter Field:=1, Criteria1:=Array("日付"), Operator:=xlFilterValues, Criteria2:=Array(buf)この部分のbufの記述方法がわかりません。宜しくお願い致します。
回答を見る
  • ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

こちらを参考にされると良いかと思います。 http://officetanaka.net/excel/vba/tips/tips151.htm 以下はサンプルコード。 Sub sample() 'sampleBook作成からCall test   With Workbooks.Add(xlWBATWorksheet).Sheets(1)     .Range("A1").Value = "field1"     .Range("A2").Value = #7/1/2012#     .Range("A2").AutoFill .Range("A2:A100")   End With   Stop '確認用   Call test End Sub Sub test()   Dim d1 As Date   Dim d2 As Date   Dim d As Date   Dim n As Long   Dim i As Long   Dim j As Long   Dim v   With ActiveSheet.Range("A1:A100")     d1 = Application.Min(.Cells)     '月単位     d2 = #9/1/2012#     n = DateDiff("m", d1, d2)     ReDim v(1 To n * 2)     For i = 1 To UBound(v) Step 2       d = DateAdd("m", j, d1)       j = j + 1       v(i) = 1 '※       v(i + 1) = d     Next     .AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=v     Stop     '日単位     d1 = #7/11/2012#     d2 = #8/11/2012#     n = DateDiff("d", d1, d2)     ReDim v(1 To n * 2)     j = 0     For i = 1 To UBound(v) Step 2       d = DateAdd("d", j, d1)       j = j + 1       v(i) = 2 '※       v(i + 1) = d     Next     .AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=v   End With End Sub

mayu1992
質問者

お礼

end-uさん、いつもお世話になります。 お忙しい中、早速のご回答ありがとうございます。 貴officetanakaのページはとても参考になります。  ご紹介頂いたページも既に見ておりましたが(熟読出来てない?)、私に基本的な 基礎が無くカットアンドトライ・コピペ・コピペ・質問・質問・カットアンドトライなのです。  VBAに手を出すべきではない・・・のかも。orz(真似) ご提示頂いたコードもレベルが高いです。 ですが!がんばります! まずは、お礼まで^^

mayu1992
質問者

補足

end_uさん、こんばんは '月単位を使用し、終了日は変数にしたかったので d2 = CDate(YY & "/" & MM & "/" & EoD) + 1 で上手く行きました。ありがとうございます^^ ところで、後学の為に教えて欲しいのですが、 ReDim v(1 To n * 2) For i = 1 To UBound(v) Step 2 これはnを2倍して、iを1つ飛びにしているのは何故でしょうか? また、'※は月単位と日単位で数値が異なるのでしょうか? 宜しくご教示願います。

その他の回答 (1)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

#>宜しくご教示願います。 #締め切られたら追加レスできないです。気をつけましょう。 既に紹介した田中亨氏のwebページ http://officetanaka.net/excel/vba/tips/tips151.htm ここの最下部見てください。 日付フィルタの条件は1次元配列で指定します。 配列(条件1の数値,条件1の日付データ,条件2の数値,条件2の日付データ,…)   (1,#2012/06/01#,1,#2012/07/01#,…) 配列の最初から、1条件あたり2個1組で指定するわけです。 Sub sample()   Dim d1 As Date   Dim d2 As Date   Dim d As Date   Dim n As Long   Dim i As Long   Dim j As Long   Dim v   d1 = #6/1/2012#   d2 = #9/1/2012#   n = DateDiff("m", d1, d2)   MsgBox n & " ヶ月分"   ReDim v(1 To n * 2)   For i = 1 To UBound(v) Step 2     'DateAdd("m"..つまり月を増分させる。     d = DateAdd("m", j, d1)     j = j + 1     v(i) = 1     v(i + 1) = d   Next   For i = 1 To UBound(v)     Debug.Print v(i)   Next   Stop End Sub Stopで止まった時、VBE画面で[Alt]→[v]→[s]キー順押し、 [ローカルウィンドウ]を表示させてください。 配列 v の左、田マーククリックで 配列の中身が展開します。 v(1) 1 v(2) #2012/06/01# v(3) 1 v(4) #2012/07/01# v(5) 1 v(6) #2012/08/01# この配列を作る為に、3ヶ月分の条件の場合は 3×2の 6要素のサイズの1次元配列を準備し、 Loop時に1つ飛ばしで v(i) = 1 v(i + 1) = d 2要素ずつ値をセットしてるわけです。 >また、'※は月単位と日単位で数値が異なるのでしょうか? これも前述のページに書いてありますから読んでくださいね。 <引用> 0:後ろに指定した日付の年 1:後ろに指定した日付の月 2:後ろに指定した日付の日 3:後ろに指定した時刻の時 4:後ろに指定した時刻の分 5:後ろに指定した時刻の秒 </引用>

mayu1992
質問者

お礼

end-uさま ご丁寧な解説をありがとうございます。 goo質問のやり方すら知らなくて、「補足」に「補足」を追加したらレスは出来なくなる事を知り、BAを付けてしまいました。 それを、サポート担当様へ追加メールのお手数までお掛けし、誠に感謝致します。 また、サポート担当様も掲載のご検討頂きありがとうございました。この場でお礼を申し上げます。 ><引用>・・・以下 この部分も見ていて、月は1、日は2が必要なのか…と思ってはいましたが、配列格納時に (1,#2012/06/01#,1,#2012/07/01#,…)の ","が自動で入る(格納される)のを知らなかった為、理解出来ていませんでした。。。 それ故、どこがどうなっているのか更に混乱してしまいました。 本当にありがとうございました!

関連するQ&A

  • エクセル2007のVBAでオートフィルタのチェック

    エクセル2007のVBAでオートフィルタのチェックを閾値以上の%のみに入れたいのです。  ユーザー設定フィルタでは視覚的に解りつらい為、フィルタの▽をクリックした時に、チェックがされている事を確認したいのです。 【シート1の内容】 セルA1から行方向に数字の1~3 セルB1から行方向に、値1、値2、% セルA3~Bnは列方向に、整数 セルC3から列方向に、“=A3/B3”が入力されており、書式は パーセンテージ(小数点以下の桁数は“1”) セルD1に 閾値として 10.5%・・・書式はC3に同じ 【目的】 動きとしては、閾値以上の結果を出すつもりで書きました。 【質問】 フィルタがかかった▽をクリックした時に、1行、2行及びC列の10.5%以上のチェックボックスにチェックを入れたいのです。 しかし、下記コードの .AutoFilter Field:=3, Criteria1:=Array("%") _ , Operator:=xlFilterValues, Criteria2:=Array(TargetCD) でエラーが出てしまいます。 実行時エラー '1004': Range クラスの AutoFilter メソッドが失敗しました。 Sub Threshol() Dim MaxRow As Integer Dim TargetCD Dim CDDiff As Integer Dim MinCD As Single Dim MaxCD As Single Dim i As Integer Dim j As Single MaxRow = Range("C1").End(xlDown).Row With ActiveSheet.Range(Cells(3, 3), Cells(MaxRow, 3)) MinCD = ThisWorkbook.Worksheets(1).Range("D1").Value * 100 MaxCD = Application.Round(Application.Max(.Cells) * 100, 1) CDDiff = (MaxCD - MinCD) * 10 ReDim TargetCD(1 To CDDiff + 1) For i = 1 To UBound(TargetCD) TargetCD(i) = FormatPercent(MinCD / 100 + j, 1) j = Format(j + 0.001, "#.###") Next .AutoFilter Field:=3, Criteria1:=Array("%") _ , Operator:=xlFilterValues, Criteria2:=Array(TargetCD) End With End Sub 皆様、良いご助言を宜しくお願い致します。

  • VBAでオートフィルを使って指定する文字列を含むものを表示させたい

    VBAを使って、セルD1に入力した文字列を検索するマクロを作りたいと思っています。 私は初心者で前に似たようなものを作ってもらって それを加工しようとしたのですが、うまくいきませんでした。 以前は完全に一致するもので表示でしたが、 今回は含むものを表示させたいです。 ワイルドカードは*をつけるのはわかるのですが、 いろいろやってみましたがダメでした。(単純なことかもしれないですけど) Private Sub Worksheet_Change(ByVal Target As Range) Dim myRng1 As Range Dim myRng2 As Range Set myRng1 = Target.Cells(1) If Application.Intersect(myRng1, Range("D1")) Is Nothing Then Exit Sub Set myRng2 = Range("D1").CurrentRegion With myRng2 If myRng1 = "" Then ActiveSheet.ShowAllData Else .AutoFilter Field:=4, Criteria1:=myRng1.Value End If End With End Sub

  • エクセルVBAのオートフィルタについて

    いつもお世話になります。 エクセル2007でVBAでオートフィルタを操作したいのですが、 一部うまくいきません。 以下の様なコードを書いて 日付で絞り込みたいのですが、 何も抽出されません。 リストを見てみると、変数はちゃんと入っており OK ボタンを押すとその日付で抽出されます。 何故VBAでの操作では抽出されないのでしょうか。 ご存じの方がおられましたら、よろしくお願いします。 Sub test() Dim mydate As Variant Dim rng3 As Range Dim fmt As Variant Dim objList3 As ListObject Dim wb1 As Workbook Dim wb2 As Workbook Dim wb4 As Workbook Dim sh1 As Worksheet Dim sh2 As Worksheet Dim sh3 As Worksheet Dim sh4 As Worksheet Dim sh7 As Worksheet '----------------------------------------------------------------------- Set wb1 = Workbooks("301.xlsm") Set wb2 = Workbooks("1.xls") Set wb4 = Workbooks("2.xls") Set sh1 = wb1.Worksheets("@") Set sh2 = wb1.Worksheets("@@") Set sh3 = wb2.Worksheets("@@@") Set sh4 = wb2.Worksheets("@@@@") Set sh7 = wb4.Worksheets("@@@@@") '---------------------------------------------------------- sh2.Range("A1:z63").ClearContents With sh7 Set objList3 = .ListObjects("リスト1") fmt = .Range("A2").NumberFormatLocal mydate = Format(mydate, fmt) objList3.Range.AutoFilter Field:=7, Criteria1:=mydate objList3.Range.AutoFilter Field:=5, Criteria1:="test" Set rng3 = objList3.Range.SpecialCells(xlCellTypeVisible) rng3.Copy sh2.Range("A2") objList3.Range.AutoFilter Field:=5 objList3.Range.AutoFilter Field:=5, Criteria1:=">=190" Set rng3 = objList3.Range.SpecialCells(xlCellTypeVisible) rng3.Copy sh2.Range("A20") objList3.Range.AutoFilter Field:=5 objList3.Range.AutoFilter Field:=7 End With Application.CutCopyMode = False Set rng3 = Nothing Set fmt = Nothing Set objList3 = Nothing Set wb1 = Nothing Set wb2 = Nothing Set wb4 = Nothing Set sh1 = Nothing Set sh2 = Nothing Set sh3 = Nothing Set sh4 = Nothing Set sh7 = Nothing End Sub (一部省略しています)

  • 【VBA】指定月のオートフィルタを作るには?

    当方Excel2003です。 あるブックの中にシートが一つ(シート名はsheet1)あり、そのシートの中にはB2セルを起点とするデータリストがあります。 (データリストの列はB列→名前、C列→金額、D列→日付とし、日付の表示はyyyy/mm/dd、行は約400行ほどあります。) 現在、データリストのD列にマクロのオートフィルターを使用し、任意の年月の月始めから月末までのデータを抽出しようとして、以下の構文を作成中なのですが、 datStart = DateSerial("i", "j", 1) の部分でエラーが出てしまい、「型が一致しません」と表示されてしまいます。 どういうふうに変更したら良いのか、またそもそも全体の構成がおかしい等の問題点があればその解決策をどなたかご教示いただければ幸いです。 よろしくお願いいたします。 Sub 指定月抽出() Dim i, j As Integer Dim datStart As Date Dim datEnd As Date Dim strSDate As String Dim strEDate As String i = Application.InputBox("年を入力してください。", Type:=1) j = Application.InputBox("月を入力してください。", Type:=1) If i = False Or j = False Then Exit Sub Application.ScreenUpdating = False Application.DisplayAlerts = False If Worksheets("sheet1").AutoFilterMode Then Worksheets("sheet1").AutoFilterMode = False End If datStart = DateSerial("i", "j", 1) datEnd = DateAdd("m", 1, datStart) strSDate = ">=" & Format(datStart, "yyyy/m/d") strEDate = ">=" & Format(datEnd, "yyyy/m/d") With ThisWorkbook.Worksheets("DATA") .Range("B2:D" & Range("D65532").End(xlUp).Row).Select .AutoFilter Field:=3, _ Criteria1:=strSDate, _ Operator:=xlAnd, _ Criteria2:=strEDate End With Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

  • 日付をオートフィルタするVBAを教えて下さい。

    Sub 日付を検索() Dim hiduke As Date hiduke = Application.InputBox(prompt:="日付を入力", Title:="日付を検索", Type:=2) Range("D3").Select Selection.AutoFilter Selection.AutoFilter Field:=4, Criteria1:=hiduke End Sub この構文が間違っているようで、日付を 10/27 とか入れても 10/27が選択されません。 4列目(D列)が日付の列です。 何にも表示が出ません。 正しい構文を教えて下さい。

  • オートフィルタ マクロについて

    質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

  • Excel VBA ・・・教えてください

    何度も質問させて頂いてます。すみません、 下記のプログラムはこの場で教えて頂いたプログラムで、 実行すると●の後を▲や■が追いかける動きをします。 下記のプログラムをある程度使用して 1~20の数字が順々で追いかけっこする プログラムを作成するにはどのようにすればいいのでしょうか… できればプログラムは長めにならず 20の数字から簡単に増やすことのできるような そんなプログラムが作成したいです… どなたかアドバイスお持ちの方 教えて下さいお願いします... Dim time1 As Integer, time As Integer Dim X As Integer, Y As Integer Dim X1 As Integer, Y1 As Integer Dim X2 As Integer, Y2 As Integer Dim maru As String, yoko As String, tate As String Dim sankaku As String, shikaku As String Sub 描画() Cells(Y2, X2).Value = shikaku Cells(Y1, X1).Value = sankaku Cells(Y, X).Value = maru End Sub Sub 削除() Cells(Y2, X2).Value = "" End Sub Sub 待機() For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next End Sub Sub 座標移動() X2 = X1 Y2 = Y1 X1 = X Y1 = Y If yoko = "右" Then X = X + 1 Else X = X - 1 End If If X = 30 Then yoko = "左" ElseIf X = 1 Then yoko = "右" End If If tate = "上" Then Y = Y + 1 Else Y = Y - 1 End If If Y = 20 Then tate = "下" ElseIf Y = 1 Then tate = "上" End If End Sub Sub main() maru = "●" sankaku = "▲" shikaku = "■" X = 1 Y = 1 X1 = 1 Y1 = 1 X2 = 1 Y2 = 1 yoko = "右" tate = "上" Do 描画 待機 削除 待機 座標移動 Loop End Sub

  • ▲ExcelのVBA▼困っています

    何度もVBAで質問させてもらい助けてもらっています。 懲りずにまた質問ですが… 下のプログラムは"●"が跳ね返るものなのですが… ●の後を■と▲が追うようなプログラムにするには なにを追加すればいいのでしょうか…?; どなたか教えて下さい;;お願いします;; Dim time1 As Integer, time As Integer Dim X As Integer, Y As Integer Dim maru As String, yoko As String, tate As String Sub 描画() Cells(X, Y).Value = maru End Sub Sub 削除() Cells(X, Y).Value = "" End Sub Sub 待機() For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next End Sub Sub 座標移動() If yoko = "右" Then Y = Y + 1 Else Y = Y - 1 End If If Y = 30 Then yoko = "左" ElseIf Y = 1 Then yoko = "右" End If If tate = "上" Then X = X + 1 Else X = X - 1 End If If X = 20 Then tate = "下" ElseIf X = 1 Then tate = "上" End If End Sub Sub main() maru = "●" X = 1 Y = 1 yoko = "右" tate = "上" Do 描画 待機 削除 待機 座標移動 Loop End Sub

  • ExcelのVBAについて

    ExcelのVBAを使って 縦20のセル、横30のセルの枠を作り 枠内で●が動き、枠に当たると跳ね返りの 繰り返しプログラムが作りたいんですが… プログラムはここまでできています↓ Sub 試作品() Dim hara As Integer, kyo As Integer Dim X As Integer, Y As Integer Dim V As String Dim hyouji As String hyouji = "●" 'hyoujiという変数に●を入れる X = 1 'Xに1を入れる Y = 1 V = "" V = "上" '------------------------------------------ Do Cells(X, Y).Value = hyouji 'XとYの位置にあるセルに●を表示 For hara = 0 To 10000 ' For kyo = 0 To 1000 'タイマーの役割 Next ' Next ' Cells(X, Y).Value = "" 'XとYの位置にあるセルに●を消す For hara = 0 To 10000 ' For kyo = 0 To 1000 'タイマーの役割 Next ' Next ' If V = "上" Then '上から来た●なら X = X + 1 'Xに1を足す Y = Y + 1 Else: V = "下" '下から来た●なら X = X - 1 'Xから1を引く Y = Y - 1 End If If X = 20 Then 'Xが20になったら V = "下" 'ループ外で定義した"上"を下に反転させる ElseIf X = 1 Then 'Xが1になったら V = "上" '下を上に反転 End If If Y = 30 Then V = "下" ElseIf Y = 1 Then V = "上" End If Loop '------------------------------------------ End Sub できたらこのプログラムに追加して 作成したいのですが… この際できれば嬉しいので これ以外のプログラムがあれば 教えて欲しいです。 VBA得意な方、お願いします;;

  • :【Excel VBA】 Do Until ~ Loop 構文で途中の空白セルを飛ばしてデータのチェックをしたい

    こんにちは。 Do Until ~ Loop 構文で 空白セルまでループして重複する値をチェックしたいと考えています。 --------------------------------------------- Sub 重複チェック() Dim 検索語 As String Dim 該当数 As Long Dim 確認 As Integer Range("A4").Activate Do Until ActiveCell.Value = "" 検索語 = ActiveCell.Value 該当数 = WorksheetFunction.CountIf(Range("A:A"), 検索語) If 該当数 >= 2 Then ActiveCell.AutoFilter Field:=1, Criteria1:=検索語 確認 = MsgBox("次を検索しますか?", vbYesNo) If 確認 = vbNo Then Exit Sub End If ActiveCell.Offset(1, 0).Activate Loop Range("A4").AutoFilter MsgBox "名前の重複チェックが終了しました。" End Sub --------------------------------------------- ただセルA列には行の途中、空白も含まれているため、 途中で止まってしまいます。 今後A列にはデータが追加されていきます。 途中の空白セルを飛ばして、 データーの最後までチェックするにはどのようにすればよいでしょうか?

専門家に質問してみよう