エクセルの学校


[[20070619143152]] 『マクロ実行時エラー[1004]』(ASK) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

|
| 全文検索 | 過去ログ | HOME ]

 

『マクロ実行時エラー[1004]』(ASK)
 過去ログ漁りつつマクロを組んでみたらエラーが出て対処が解りません。
 マクロ駆け出しの私に救いの手を下さい><

 過去ログ
http://www.excel.studio-kazu.jp/cgi-bin/kazuwiki2.cgi?mycmd=read&mypage=[[20060807162450]]
 と同じエラー文が表示されます。

 作ってみたコードが、

 Sub 顧客データ抽出()
 '

    Sheets("Sheet1").Select
    Selection.AutoFilter Field:=6, Criteria1:="000000"
    Columns("A:Q").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Sheets("ALL").Select
    Range("A1").Select
    ActiveSheet.Paste

    Sheets("Sheet2").Select
    Selection.AutoFilter Field:=6, Criteria1:="000000"
    Columns("A:Q").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Sheets("ALL").Select
    Range("A" & Range("A1").End(xlDown).Row + 1).Select 
    ActiveSheet.Paste

    Sheets("Sheet3").Select
    Selection.AutoFilter Field:=6, Criteria1:="000000"
    Columns("A:Q").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Sheets("ALL").Select
    Range("A" & Range("A1").End(xlDown).Row + 1).Select 
    ActiveSheet.Paste

    Sheets("Sheet4").Select
    Selection.AutoFilter Field:=6, Criteria1:="000000"
    Columns("A:Q").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Sheets("ALL").Select
    Range("A" & Range("A1").End(xlDown).Row + 1).Select 
    ActiveSheet.Paste  ←ココが黄色反転する

    Sheets("Sheet5").Select
    Selection.AutoFilter Field:=6, Criteria1:="000000"
    Columns("A:Q").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Sheets("ALL").Select
    Range("A" & Range("A1").End(xlDown).Row + 1).Select 
    ActiveSheet.Paste

 シート4にあるデータはどこもセルが結合されてなく、
 データの表示形式は全て統一されています。
 何が原因なのかさっぱりです。
 教えてくださいー><

 OS WIN XP  EXCEL 2000


 単純に考えると、シートの最大行よりも下に貼り付けようとしているだけだと思いますが。。。(ROUGE)

 ROUGE様
 最大行…っていうと、
 Range("A" & Range("A1").End(xlDown).Row + 1).Select 
 この行で指定しているという事なんでしょうか?
 このコード以外は全部自動記録で作ったので何がいけなかったのかさっぱり;

 シート3まではちゃんと動いて貼り付けてくれてるんですが。。。 (ASK)

 コピーした領域の大きさよりも、貼り付け先の領域の大きさが不足しているためのエラーだと推測してます。
 ↓は明らかにダメだと分かるコードですが、同様のエラーが出ませんか?(ROUGE)
'----
Sub test()
    Range("A1:A2").Copy Cells(Rows.Count, 1)
End Sub

 ROUGE様
 同じエラーがでました;;
 領域不足ということは、シート1から5までがA〜Q列を選択していることが原因なんでしょうか??

 本来ならソートした部分のみ選択して貼り付けたいのですが、
 力量不足ゆえやり方がさっぱりで。。。  (ASK)

 アクティブセル領域の選択(CurrentRegionプロパティ) 
 終端のセルを選択する (Endプロパティ)
 等を調べてみてください。
 

 これを試してみてください。(ROUGE)
'----
Sub test()
    Range("A1", Range("A1").SpecialCells(11)).Resize(, 17).SpecialCells(12).Select
End Sub

 ROUGE様
 返事が遅れてスミマセン;(定時退社大好きなもので;;)
 教えていただいたコードを試したところ、
 理想的な選択範囲になりました!!

 Resize(, 17)はA1から17列目まで指定かなぁ・・・というのは解ったのですが、
 他の11とか12は・・・何を意味するのでしょうか?
 今後のために教えていただけると嬉しいのですが。。。(ASK)

 11 --> xlCellTypeLastCell
 12 --> xlCellTypeVisible
 ということですb
 (ROUGE)

 ROUGE様
 なるほど!!
 そういう意味だったんですね!
 教えていただきありがとうございました!
 コレで停滞していた業務がこなせます(>▽<)b
 ありがとうございました!

 又何かあったときには宜しくお願いします。。。(ASK)

 Sheetが変わるだけで同様の処理をしているようなので、For Each Nextでループさせることもできますね。
 (ROUGE)
'----
Sub 顧客データ抽出()
Dim x
For Each x In Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")
    With Sheets(x)
        .AutoFilterMode = False
        With .Range("A1", .Range("A1").SpecialCells(11))
            .AutoFilter 6, "000000"
            .Resize(, 17).SpecialCells(12).Copy Sheets("ALL").Range(IIf(Sheets("ALL") _
                .Range("A1").Value = "", "A1", Sheets("ALL").Range("A" & Rows.Count) _
                .End(xlUp).Offset(1).Address))
        End With
    End With
Next
Application.CutCopyMode = False
End Sub

コメント:

[ 一覧(最新更新順) |

]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.