プロが教える店舗&オフィスのセキュリティ対策術

下のコードを使用してオートフィルタからA列を抽出し指定して別シートに貼り付けることが出来ましたが
空白の欄が指定していないシートに張り付いてしまいます。
どこを直していいのかわかりませんので、ご教授お願いいたします

Dim m1 As String
Dim arry As Variant
Dim a2 As Long
m1 = "メ1,メ2,メ3,メ4,メ5,メ6,メ7,メ8"
arry = Split(m1, ",")

Worksheets("発注書リスト").Activate

If ActiveSheet.AutoFilterMode = False Then
Range("A1:A11").AutoFilter
End If


For a2 = 1 To 9
Worksheets("発注書リスト").Activate
ActiveSheet.Range("$A$2:$A$11").AutoFilter Field:=1, Criteria1:=arry(a2 - 1)
Range("B2:B11").Copy
Worksheets(arry(a2 - 1)).Activate
Range("A11").PasteSpecial Paste:=xlPasteValues

Next

A 回答 (1件)

こんばんは



なんだかフィルターの範囲が微妙にずれていたりするけれど、それは問題ないのでしょうか?
また、シート名の要素数と実行時のループの数もあっていなかったりするようですが・・?


>空白の欄が指定していないシートに張り付いてしまいます。
配列で指定していないシート名のシートに張り付いてしまうということでしょうか?
ざっと見る限りでは、「指定していないシート」に張り付くことは無いと思いますけれど?

もしかすると、そちらのシートには、「配列に指定のあるシート」に連動して値が変わるような関数式が設定されているか、あるいはマクロで連動するような設定になっていたりしませんか?

実際のところがよくわかりませんけれど、指定したシートが空白になるのなら、フィルターをかけた結果が空白セルを含んでいて(あるいは空白セルのみで)、それをコピペしているだけなのではありませんか?


>どこを直していいのかわかりませんので、ご教授お願いいたします
何をどうしたいのかが正確にわからないと、どうすれば良いのかはなんとも言えません。
一方で、なさりたいことは質問者様ご自身ではわかっているのでしょうから、それを手操作で行って「マクロの記録」にとってみて、その結果を参考にしてみるとか・・
    • good
    • 0
この回答へのお礼

こんばんは
回答ありがとうございます。
すみません。要素数と実行時のループのところは具体的な会社名を伏せようとして間違えて多く削除してしまいました。質問していながら誤字のチェックをしていませんでした。

確かに、vlookupを使用しているところがあります。
明日、削除して確かめてみます。また、マクロの記録の結果も確かめてみます。

お礼日時:2023/11/09 19:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A