[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロのコードについて』(みっちゃん)
下記のように自動記録でマクロをつくりました。が、無駄が多いとおもいます。
もう少し簡略できるコードをご教授お願いします!(みっちゃん)
Sub データ抽出() ' ' データ抽出 Macro ' Sheets("抽出用").Select Range("A1").Select Sheets("入力用").Range("B3:K105").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("L4:L5"), CopyToRange:=Range("A1:J1"), Unique:=False Range("A2").Select Selection.Copy Range("L2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A2").Select ActiveSheet.Paste Application.CutCopyMode = False Range("L2:O2").Select Selection.Copy Sheets("日計表").Select Range("a65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select Sheets("抽出用").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A2:J102").Select Selection.Copy Sheets("データシートA").Select Range("a65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select Sheets("抽出用").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.ClearContents Range("A1").Select Sheets("入力用").Range("B3:K105").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("M4:M5"), CopyToRange:=Range("A1:J1"), Unique:=False Range("M2:O2").Select Selection.Copy Sheets("日計表").Select Range("e65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select Sheets("抽出用").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A2:J102").Select Selection.Copy Sheets("データシートB").Select Range("a65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select Sheets("抽出用").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.ClearContents Range("A1").Select End Sub Sub 入力2004() ' ' Sheets("入力用").Select Application.ScreenUpdating = False Application.Run "'請求書1.xls'!シートOFF" Range("B4").Select Sheets("抽出用").Select Application.Run "'請求書1.xls'!データ抽出" Sheets("入力用").Select MsgBox "入力完了!" Range("A4").Select ActiveCell.FormulaR1C1 = "=RC[1]+R[-1]C" Range("A4").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False Range("B4").Select Selection.ClearContents Range("A4").Select Selection.Copy Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A4").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.ClearContents Range("A6").Select Selection.Copy Range("A4").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Range("B4").Select Range("D4:D105,G4:G105,J4:J105").Select Range("J105").Activate Selection.ClearContents ActiveWindow.SmallScroll Down:=-92 Range("D4").Select Application.Run "'請求書1.xls'!シートON" End Sub
この方法もありですが、 何をしたいか説明したほうが良いのではありませんか? (kazu)
>何をしたいか説明したほうが良いのではありませんか ベストの方法はそうなんですけど、そこまでご自分ででけたんやったらもう少しつっこ で、自分で不必要やと思われるコードに「’」マークを付け、それが成立するかどうか を検証してみるんが上達の早道やと思いまっせぇ。 自分の手の内に入れようと思うのなら努力を惜しんではイケマセン。 上のコードで言えば、 Range("A2").Copy 'Select 'Selection.Copy Range("L2").Select Selection.PasteSpecial Paste:=xlPasteValues ', Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A2").Select ActiveSheet.Paste Application.CutCopyMode = False Range("L2:O2").Copy 'Select 'Selection.Copy と言った案配ですワ。 そしたらどれだけ省略出来るか身ぃをもって体験でけますさかいナ。 百聞は一見にしかず、百見は一験にしかずでっせ。(弥太郎語録)
何でも経験が物言いますさかいナ。 ほな・・(弥太郎)
ここまでマクロの記録で全て作ったのは賞賛します。が 自分が実際に行っている作業全てを記録して、全部まとめて何とかしてくれ というのは、無茶としかいえません。
あなたがすべきことは、
(1)小さな作業を一つ一つマクロにして順番に実行する。 (実際小分けにマクロ記録したものを最後に一つにしたのだと思います) (2)似ている処理をまとめてサブルーチン化する。 (処理は同じだけどセルの範囲が違うなど) (3)繰り返しでできるものをFor ループなどで行う。
(kazu)
たいていの場合、select は要らないので、
Range("A2").Select Selection.Copy ↓ Range("A2").Copy
にすることができます。
(INA)
Application.CutCopyMode = False も、最後のもの以外は削除しても良いと思いますよ。 (KAMIYA) KAMIYA様 ありがとうございます。(みっちゃん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.