Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


727 / 13645 ツリー ←次へ | 前へ→

【78706】ペーストのVBA 初心 16/12/21(水) 11:06 質問[未読]
【78707】Re:ペーストのVBA 初心 16/12/21(水) 11:21 発言[未読]
【78710】Re:ペーストのVBA β 16/12/21(水) 13:11 発言[未読]
【78712】Re:ペーストのVBA 初心 16/12/21(水) 14:22 お礼[未読]
【78711】Re:ペーストのVBA β 16/12/21(水) 13:25 発言[未読]
【78713】Re:ペーストのVBA 初心 16/12/21(水) 14:29 回答[未読]
【78714】Re:ペーストのVBA β 16/12/21(水) 14:58 発言[未読]
【78715】Re:ペーストのVBA 初心 16/12/21(水) 16:24 お礼[未読]

【78706】ペーストのVBA
質問  初心  - 16/12/21(水) 11:06 -

引用なし
パスワード
   初めて投稿させていただきます。
シート1で、フィルターし表示されているのをシートにの任意CELL(A21)へ
値のみコピーしたいのですが・・・。どうしてもペーストの部分でエラー1004が
でます。

wsData.Range("$A$2:$H$200").AutoFilter Field:=6, Criteria1:="1"
  Selection.SpecialCells(xlCellTypeVisible).Select
  Selection.Copy
  Application.Wait Now + TimeValue("0:00:10")
  wsInvoice.Select
  Range("A21").Select
ここの部分です↓
  Selection.PasteSpecial Paste:=xlPasteValues
  Application.CutCopyMode = False
  wsData.Select
  Range("F3:F200").Select
  Selection.ClearContents
  ActiveSheet.Range("$A$2:$F$134").AutoFilter Field:=6
  ActiveSheet.Range("$A$2:$F$200").AutoFilter Field:=1
  wsInvoice.Select
  Range("F21").Select
End Sub

2日ほどいろいろ試しているのですが、そこのペーストを抜くとエラーにならないので
ペースト部分

【78707】Re:ペーストのVBA
発言  初心  - 16/12/21(水) 11:21 -

引用なし
パスワード
   ▼初心 さん:
>初めて投稿させていただきます。
>シート1で、フィルターし表示されているのをシートにの任意CELL(A21)へ
>値のみコピーしたいのですが・・・。どうしてもペーストの部分でエラー1004が
>でます。
>
>wsData.Range("$A$2:$H$200").AutoFilter Field:=6, Criteria1:="1"
>  Selection.SpecialCells(xlCellTypeVisible).Select
>  Selection.Copy
>  Application.Wait Now + TimeValue("0:00:10")
>  wsInvoice.Select
>  Range("A21").Select
>ここの部分です↓
>  Selection.PasteSpecial Paste:=xlPasteValues
>  Application.CutCopyMode = False
>  wsData.Select
>  Range("F3:F200").Select
>  Selection.ClearContents
>  ActiveSheet.Range("$A$2:$F$134").AutoFilter Field:=6
>  ActiveSheet.Range("$A$2:$F$200").AutoFilter Field:=1
>  wsInvoice.Select
>  Range("F21").Select
>End Sub
>
>2日ほどいろいろ試しているのですが、そこのペーストを抜くとエラーにならないので
>ペースト部分

申し訳ありません・・・途中で送信してしまった用です・・・
マクロの記録を使って色々試してはいるものの、どうしてもペーストの部分がエラーになるので、ご教示いただきたく 何卒よろしくお願いいたします。

【78710】Re:ペーストのVBA
発言  β  - 16/12/21(水) 13:11 -

引用なし
パスワード
   ▼初心 さん:

コードそのものは、改善できるところ(もしくは、修正しなければいけないところ)がたくさんありますが、
とりあえずwsDataシートに、正しいタイトル行があり、
かつ、抽出対象データがあればエラーにはなりませんよ。

抽出対象データがなければ

Selection.SpecialCells(xlCellTypeVisible).Select

でエラーになりますが。

1004エラーとともに、なぜ1004エラーになったのかのメッセージが出ているはずですが
どういったメッセージでしたか?

wsInvoiceシートにシート保護がかかっているということはないですか?

【78711】Re:ペーストのVBA
発言  β  - 16/12/21(水) 13:25 -

引用なし
パスワード
   ▼初心 さん:

ついでに質問します。

1.コピー後、ペースト前に 10秒間 Wait している理由は?

2.Range("F3:F200").Select
  Selection.ClearContents

  コピペ後、抽出判定領域の F列をクリアしている意味は?

3.ActiveSheet.Range("$A$2:$F$134").AutoFilter Field:=6
  ActiveSheet.Range("$A$2:$F$200").AutoFilter Field:=1
  
  処理後、フィルタリング状態を解除し、全データ表示にしたいのでしょうけど

  1)アップされたコードには見当たりませんが A列でもフィルタリングしているのですか?
  2)F列とA列の領域、一方は134行目まで、一方は200行目と、違っているのはなぜですか?

【78712】Re:ペーストのVBA
お礼  初心  - 16/12/21(水) 14:22 -

引用なし
パスワード
   お返事ありがとうございます。

エラー内容は、この操作には、同じサイズの結合せるが必要ですと
出るんですが、結合してるセルもないので・・・サイズなのかなと思ったりしたんですが違うみたいで・・・

▼β さん:
>▼初心 さん:
>
>コードそのものは、改善できるところ(もしくは、修正しなければいけないところ)がたくさんありますが、
>とりあえずwsDataシートに、正しいタイトル行があり、
>かつ、抽出対象データがあればエラーにはなりませんよ。
>
>抽出対象データがなければ
>
>Selection.SpecialCells(xlCellTypeVisible).Select
>
>でエラーになりますが。
>
>1004エラーとともに、なぜ1004エラーになったのかのメッセージが出ているはずですが
>どういったメッセージでしたか?
>
>wsInvoiceシートにシート保護がかかっているということはないですか?

【78713】Re:ペーストのVBA
回答  初心  - 16/12/21(水) 14:29 -

引用なし
パスワード
   ▼β さん またまたありがとうございます。
>1.コピー後、ペースト前に 10秒間 Wait している理由は?
→コピーとペーストまでの操作時間が影響している可能性があるのかもという
記述を調べている時にみつけたので、追加してみました。ただこれが必要なのか
現状ではわからないんです。ごめんなさい

>
>2.Range("F3:F200").Select
>  Selection.ClearContents
>
>  コピペ後、抽出判定領域の F列をクリアしている意味は?
次に使う人が使いやすい様にクリアした方がいいのかなとおもった次第です。 
ここのシートには、商品データがあり
フィルタを使って必要なものを表示→請求書へ転記というものを作りたく。


>
>3.ActiveSheet.Range("$A$2:$F$134").AutoFilter Field:=6
>  ActiveSheet.Range("$A$2:$F$200").AutoFilter Field:=1
>  
>  処理後、フィルタリング状態を解除し、全データ表示にしたいのでしょうけど
→はいそのとおりなんです。

>  1)アップされたコードには見当たりませんが A列でもフィルタリングしているのですか?
→はい。A列にはカテゴリーとして一覧があるので カテゴリをフィルタ→F列に商品があるので必要商品を1と入力して選んだものをコピーする様にしたかったんです。
>  2)F列とA列の領域、一方は134行目まで、一方は200行目と、違っているのはなぜですか?
→申し訳ありません、データの数が増えてもいいように、134→200にしたものを
片方変更もれです。

【78714】Re:ペーストのVBA
発言  β  - 16/12/21(水) 14:58 -

引用なし
パスワード
   ▼初心 さん:

このメッセージが出るということは wsInvoiceシートの21行目から下に
結合セルがあるということです。

よく調べてみてください。

なお、処理後、F列をクリアしているということは、次回処理する際には
1 がたっていないわけですから、必ず 1 をつけてから操作する必要がありますね。

まぁ、それはともあれ、アップされたコードでやろうとしていることを継承して
コード記述をかえてみました。参考までに。
(それでも、結合セルがあれば、これもエラーになります)

★印のところは実際のシート名にしてください。

Sub Sample()
  Dim wsData As Worksheet
  Dim wsInvoice As Worksheet
  
  Set wsData = Sheets("Sheet1")    '★
  Set wsInvoice = Sheets("Sheet2")  '★
  
  wsInvoice.Range("A1", wsInvoice.UsedRange).Columns("A:H").Offset(20).ClearContents
  wsData.AutoFilterMode = False '念のためいったんリセット
  
  wsData.Range("A1").CurrentRegion.AutoFilter Field:=6, Criteria1:="1"
  wsData.AutoFilter.Range.Copy wsInvoice.Range("A21")
  
  On Error Resume Next
  wsData.ShowAllData
  On Error GoTo 0
  
  wsData.AutoFilter.Range.Columns("F").Offset(1).ClearContents
    
  wsInvoice.Select
  
End Sub

【78715】Re:ペーストのVBA
お礼  初心  - 16/12/21(水) 16:24 -

引用なし
パスワード
   ▼β さん:
うわー!!!!ありがとうございます!!!!
教えていだたいたコードでできました! 今回とても勉強になりました。
奥が深いですね。もっともっと勉強していきたいと思います!

>▼初心 さん:
>
>このメッセージが出るということは wsInvoiceシートの21行目から下に
>結合セルがあるということです。
>
>よく調べてみてください。
>
>なお、処理後、F列をクリアしているということは、次回処理する際には
>1 がたっていないわけですから、必ず 1 をつけてから操作する必要がありますね。
>
>まぁ、それはともあれ、アップされたコードでやろうとしていることを継承して
>コード記述をかえてみました。参考までに。
>(それでも、結合セルがあれば、これもエラーになります)
>
>★印のところは実際のシート名にしてください。
>
>Sub Sample()
>  Dim wsData As Worksheet
>  Dim wsInvoice As Worksheet
>  
>  Set wsData = Sheets("Sheet1")    '★
>  Set wsInvoice = Sheets("Sheet2")  '★
>  
>  wsInvoice.Range("A1", wsInvoice.UsedRange).Columns("A:H").Offset(20).ClearContents
>  wsData.AutoFilterMode = False '念のためいったんリセット
>  
>  wsData.Range("A1").CurrentRegion.AutoFilter Field:=6, Criteria1:="1"
>  wsData.AutoFilter.Range.Copy wsInvoice.Range("A21")
>  
>  On Error Resume Next
>  wsData.ShowAllData
>  On Error GoTo 0
>  
>  wsData.AutoFilter.Range.Columns("F").Offset(1).ClearContents
>    
>  wsInvoice.Select
>  
>End Sub

727 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free