Excel VBA質問箱 IV

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

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


9149 / 13644 ツリー ←次へ | 前へ→

【29067】コードをシンプルにしたい。 mina 05/9/22(木) 23:12 質問[未読]
【29078】Re:コードをシンプルにしたい。 ponpon 05/9/23(金) 10:10 発言[未読]
【29085】Re:コードをシンプルにしたい。 mina 05/9/23(金) 16:45 お礼[未読]

【29067】コードをシンプルにしたい。
質問  mina  - 05/9/22(木) 23:12 -

引用なし
パスワード
   はじめまして。VBAを勉強して2週間になる初心者です。

↓は、"DATA"シートと"DATA_month"シートにフィルタをかけてコピーし、
"temp"シートに貼り付けるというものです。これをなんとかしてもっとシンプルに
したいと思うのですが、いくらやってもエラーが出てしまい困っております。
どなたかお力をお貸し下さい。よろしくお願いします。

店舗コード = Sheets("実績").Range("E5").Value
  
  With Sheets("DATA")
    .Activate
    .Cells.AutoFilter Field:=2, Criteria1:="=" & 店舗コード
    .Range("A1").Select
    .Range("A:M").SpecialCells(xlCellTypeVisible).Copy
  End With
  
  Sheets("temp").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
  Application.CutCopyMode = False
  
  
  With Sheets("DATA_month")
    .Activate
    .Cells.AutoFilter Field:=2, Criteria1:="=" & 店舗コード
    .Range("A1").Select
    .Range("A:M").SpecialCells(xlCellTypeVisible).Copy
  End With
  
  Sheets("temp").Range("N1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
  Application.CutCopyMode = False

【29078】Re:コードをシンプルにしたい。
発言  ponpon  - 05/9/23(金) 10:10 -

引用なし
パスワード
   こんにちは。

提示コードを実行してもエラーはでないようですが、
どんなことをしたら、
どんなエラーがでるのでしょうか?


Sub test()
  Dim 店舗コード
  Dim myAry1 As Variant
  Dim myAry2 As Variant
 
  店舗コード = Sheets("実績").Range("E5").Value
  myAry1 = Array("DATA", "DATA_month")
  myAry2 = Array("A1", "N1")
  For i = 0 To 1
   With Sheets(myAry1(i))
    .Cells.AutoFilter Field:=2, Criteria1:="=" & 店舗コード
    .AutoFilter.Range.Copy 'すべての項目なら
    .AutoFilterMode = False
    End With
   Sheets("temp").Range(myAry2(i)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
   Application.CutCopyMode = False
  Next
End Sub

【29085】Re:コードをシンプルにしたい。
お礼  mina  - 05/9/23(金) 16:45 -

引用なし
パスワード
   おっしゃる通り、質問文に書いたコードはエラーが出ないのですが、実行すると少し遅くなるので
短いコードにしたかったのです。そこでFor〜Nextを使い、コードを短くしようと自分なりにやってみたのですが
tempシートへの貼り付けの段階でなかなかうまくいかずエラーが出ていたようです。
なるほど、シートのセルを選択するときも配列を利用できるのですね。勉強になります!
ありがとうございました。やっと上手く出来ました。

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