ここから本文です

マクロについて質問です。 以下のコードの中に、コピー元ファイルがフィルター...

ais********さん

2018/9/1919:12:26

マクロについて質問です。

以下のコードの中に、コピー元ファイルがフィルターで絞り込まれていた場合、クリアをしたい(フィルター解除ではなく)のですが、エラーとなってしまいます。

また、ShowAllDataもつかいましたがうまくいきませんでした。
私の指定の仕方が悪いのでしょうか?

★の部分にこのコードをいれました。
'フィルターで絞り込まれていたら全表示
If Workbooks(sFile).AutoFilterMode = True Then Sh AutoFilter.ShowAllData
If Worksheets(sFile).AutoFilterMode = False Then Exit Sub

~以下全文~
Dim myFind As Variant
Dim myfRow As Long, c As Range
Dim CopySh As Worksheet
Dim i As Long
Dim sFile As String
Dim tFile As String
Dim tCopySh As Worksheet
Dim Sh As Worksheet

'===============コピー先設定================
sFile = "管理表.xlsx"

'コピー先ブックを開く
Workbooks.Open (ThisWorkbook.Path & "¥" & "管理表.xlsx")

'コピー先シート
Set CopySh = Workbooks(sFile).Worksheets("Sheet2")

'コピー先のセルの最初の行
i = CopySh.Cells(Rows.Count, 2).End(xlUp).Row + 1
If i <= 6 Then i = 6
myFind = "1"
'===========================================

'=========転記情報ファイル設定==========
tFile = "転記情報.xlsx"

'情報ブックを開く
Workbooks.Open (ThisWorkbook.Path & "¥" & "転記情報.xlsx")

'情報ブックのシート
Set tCopySh = Workbooks(tFile).Worksheets("Sheet1")

'情報ブックのセルの最初の行
j = tCopySh.Cells(Rows.Count, 2).End(xlUp).Row + 1
If j <= 6 Then j = 6
'===========================================

★'フィルターで絞り込まれていたら全表示
If Workbooks(sFile).AutoFilterMode = True Then Sh AutoFilter.ShowAllData
If Worksheets(sFile).AutoFilterMode = False Then Exit Sub

If myFind = vbBoolean Or myFind = "" Then Exit Sub

With ThisWorkbook.Worksheets("Sheet1").Columns(2)
Set c = .Find(myFind, LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
'検索値が一つも存在しない場合はjを0にする
j = 0
Else
myfRow = c.Row
Do
c.Resize(, 9).Copy Destination:=CopySh.Cells(i, 2)
Set c = .FindNext(c)
i = i + 1
Loop Until c Is Nothing Or myfRow = c.Row
End If
.Replace what:="1", replacement:="移行済", lookat:=xlWhole
If j Then
.Hyperlinks.Add anchor:=tCopySh.Cells(j, 4), Address:=(ThisWorkbook.Path & "¥""管理表.xlsx")
tCopySh.Cells(j, 2).Value = Date

End If
End With

Workbooks(tFile).Close SaveChanges:=True
Workbooks(sFile).Close SaveChanges:=True

閲覧数:
36
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2018/9/1922:35:57

>コピー元ファイルがフィルターで絞り込まれていた場合、クリアをしたい
コピー元なのですかね?

Set CopySh = Workbooks(sFile).Worksheets("Sheet2")

If Workbooks(sFile).AutoFilterMode = True Then Sh AutoFilter.ShowAllData
If Worksheets(sFile).AutoFilterMode = False Then Exit Sub

c.Resize(, 9).Copy Destination:=CopySh.Cells(i, 2)

↑の3カ所を見る限りコピー先にしか見えないです。

>私の指定の仕方が悪いのでしょうか?
そうです。
AutoFilterMode プロパティ
ShowAllData メソッド
ともに操作の対象は、Worksheetになります。

以下、VBAのヘルプに書かれた例文です。

<AutoFilterMode>
If Worksheets("Sheet1").AutoFilterMode Then
isOn = "On"
Else
isOn = "Off"
End If
MsgBox "AutoFilterMode is " & isOn

<ShowAllData>
Worksheets("Sheet1").ShowAllData

なのであなたのコードは、ブックを対象にしたり、AutoFilterオブジェクトを対象にしたりと、無茶苦茶ということになりますね。
適切なシートを対象に書き換えてください。

CopyShかtCopySh に対して操作することになると思います。

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる