![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
以下のコードを使用してメーカー毎にシートを指定して振り分けているのですが
指定した分はしっかりと振り分けられるのですが指定していないメーカー名は用意したシートに
全てコピーされてしまいます。
どこが悪いか分からず、直すところを教えてもらえないでしょうか?
Sub 発注書作成()
Dim m As String, i As Long
Dim arry As Variant
m = "メーカー1,メーカー2,メーカー3,メーカー4,メーカー5,メーカー6,メーカー7,メーカー8,メーカー9,メーカー10,メーカー11"
arry = Split(m, ",")
Worksheets("出荷指図書").Activate
If ActiveSheet.AutoFilterMode = False Then
Range("C8:C18").AutoFilter
End If
'メーカーごとにコピー
Application.ScreenUpdating = False
For i = 1 To 11 'メーカーシートの数
Worksheets("出荷指図書").Activate
ActiveSheet.Range("$C$6:$C$16").AutoFilter Field:=1, Criteria1:=arry(i - 1)
Range("D9:G18").Copy
Worksheets(arry(i - 1)).Activate
Range("A11").PasteSpecial Paste:=xlPasteValues
'お客様名
Worksheets("出荷指図書").Activate
Range("D6").Copy
Worksheets(arry(i - 1)).Activate
Range("E11").PasteSpecial Paste:=xlPasteValues
'発注書印刷
If WorksheetFunction.Sum(Range("C11:C20")) <> 0 Then
ActiveSheet.PrintPreview 'PrintOut
End If
Next
Worksheets("出荷指図書").Activate
ActiveSheet.Range("$C$6:$C$16").AutoFilter
Application.ScreenUpdating = True
End Sub
![「マクロのコードについて教えてください」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/543219148_654d8c130b877/M.png)
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
下記でどうでしょうか。
フィルター後、表示された行が0なら、転記しないようにしています。
(プレビューも行いません)
フィルター後の表示行の取得は、
https://www.excel-chunchun.com/entry/20200613-ex …
をそのまま使っています。
Sub 発注書作成()
Dim m As String, i As Long
Dim arry As Variant
m = "メーカー1,メーカー2,メーカー3,メーカー4,メーカー5,メーカー6,メーカー7,メーカー8,メーカー9,メーカー10,メーカー11"
arry = Split(m, ",")
Worksheets("出荷指図書").Activate
If ActiveSheet.AutoFilterMode = False Then
Range("C8:C18").AutoFilter
End If
'メーカーごとにコピー
Application.ScreenUpdating = False
For i = 1 To 11 'メーカーシートの数
Worksheets("出荷指図書").Activate
ActiveSheet.Range("$C$6:$C$16").AutoFilter Field:=1, Criteria1:=arry(i - 1)
Dim displine
displine = ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
If displine > 0 Then
Range("D9:G18").Copy
Worksheets(arry(i - 1)).Activate
Range("A11").PasteSpecial Paste:=xlPasteValues
'お客様名
Worksheets("出荷指図書").Activate
Range("D6").Copy
Worksheets(arry(i - 1)).Activate
Range("E11").PasteSpecial Paste:=xlPasteValues
'発注書印刷
If WorksheetFunction.Sum(Range("C11:C20")) <> 0 Then
'ActiveSheet.PrintPreview 'PrintOut
End If
End If
Next
Worksheets("出荷指図書").Activate
ActiveSheet.Range("$C$6:$C$16").AutoFilter
Application.ScreenUpdating = True
End Sub
回答ありがとうございます。
今、詳しくいろいろ調べたところエクセルのfilter関数でも
似たようなことができたのでそちらを使用しようと思います。
また、質問した際はご回答よろしくお願いします
No.1
- 回答日時:
こんにちは
手操作あるいはステップ実行してみれば、すぐにわかると思いますけれど・・・
そういう仕様になっているようです。
Copyメソッドは、通常は、指定された範囲内の「表示セル」だけをコピーしますけれど、「非表示の範囲だけ」を指定してコピーした場合には、そのままその範囲がコピーされるようです。
(多分、コピー対象が何も無いので、指定された範囲をコピーしているのかと)
この結果、ご質問のような事象になっているものと考えられます。
>どこが悪いか分からず、直すところを教えてもらえないでしょうか?
原因は上記ですが、ご提示のままの処理で行うのなら、フィルターの結果を判定してからコピー処理を行えば宜しいかと。
まるっきり考え方を変えても良ければ、
・元シートの一つ分のデータを、メーカー別シートに振り分ける
という処理をデータ分だけループでくりかえせば、こちらでも可能でしょう。
(こちらの場合は、フィルター操作は不要になります)
こんにちは
先日から回答ありがとうございます。
仕様の可能性もあるのですね。
フィルター操作不要の方法で作成してみようかと思います。
また、質問する際はご教授お願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 転記先VBA 一致しているセルがコピーされない 5 2021/11/15 17:23
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) EXCEL VBA シート貼り付け 3 2021/11/15 12:33
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) EXCLE VBA シートクリックしたら該当シートコピー 1 2021/11/11 16:37
- Visual Basic(VBA) 転記VBA エラーが出ます 2 2021/11/15 16:08
- Visual Basic(VBA) VBA シート名が一致した場合の転記内容について 2 2021/11/15 13:07
- Excel(エクセル) Rangeメソッドは失敗しました。globalオブジェクトについて 6 2021/11/21 21:54
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセルのマクロのコードについて
Visual Basic(VBA)
-
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
-
4
近似した文字列を置換するエクセル関数またはVBAについて
Visual Basic(VBA)
-
5
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
6
エクセルvbaについて
Visual Basic(VBA)
-
7
for 文の 繰り返し処理に使えるのかどうかについて
Visual Basic(VBA)
-
8
エクセルファイルのデータ転記について
Visual Basic(VBA)
-
9
10行目にフィルターを使用して見出しがあります。列はA:DFで11行目以降(2000行ぐらい)はデー
Visual Basic(VBA)
-
10
VBA 複数の各シートに行を追加したいです
Visual Basic(VBA)
-
11
VBAコードについて
Visual Basic(VBA)
-
12
VBAのコードを教えてください
Visual Basic(VBA)
-
13
エラー表示になってしまいます。
Excel(エクセル)
-
14
VBAを教えていただきたいです。 添付のような「data sheet」があります。 他に、「集計 s
Visual Basic(VBA)
-
15
VBAに関して
Visual Basic(VBA)
-
16
ExcelのVBAコードを教えて頂けますでしょうか。 例シート2つがあります。 シート1は元データ
Excel(エクセル)
-
17
VBA 二つのブックをうまく扱えないでいます
Visual Basic(VBA)
-
18
月ごとに作成している日報ファイルを、VBAでコピーし日付ごとのシートにしたい
Visual Basic(VBA)
-
19
特定文字を入ってるCSVの特定の列を特定のexcelシートに取り込みたいです
Visual Basic(VBA)
-
20
A列B列どちらにもあるのを抽出する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
VBAコードについて教えてくださ...
-
エクセルVBAコードで教えて下さ...
-
Excelのマクロについて教えてく...
-
VBA 別ブックからコピペしたい...
-
エクセルのマクロについて教え...
-
Outlookにて既にウィドウ単体で...
-
ユーザーフォームに別シートか...
-
Outlookの「受信日時」「件名」...
-
FileCopy時のエラー
-
VB.NETでボタンのクリックイベ...
-
Excelのマクロについて教えてく...
-
VBAなくなるの?
-
VBA 別ブックから条件に合うも...
-
ExcelのVBAコードを教えて頂け...
-
Excelのマクロについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルVBA
-
ExcelのVBAコードについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで大量のファイルをシート名...
-
VBA レジストリの値の読み方に...
-
Excelのマクロについて教えてく...
-
ユーザーフォームに別シートか...
-
VBAの計算で@が出てしまう件
-
エクセルVBAについて
-
Vba 実数および実数タイプの変...
-
【ExcelVBA】値を変更しながら...
-
VBA一覧取得 再投稿
-
VBA指定行削除
-
エクセルVBAについて
-
VBA ユーザーフォーム ボタンク...
-
VBA 何かしら文字が入っていたら
-
エクセルについて
-
2つのマクロでチェックボックス...
-
【マクロ】1つのマクロの中に...
-
ExcelのVBAコードについて教え...
-
VB.net(VB)で、フォームにExcel...
-
Vba SelStart、SelLen教えてく...
-
Excel-VBAのmsgBox()の不思議
おすすめ情報