teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

マクロの記録で得られた例を追加した

2018/05/15 14:07

投稿

coco_bauer
coco_bauer

スコア6921

answer CHANGED
@@ -1,2 +1,44 @@
1
1
  マクロの記録を使えば、自分で操作した事に対応するマクロが記録されます。
2
- 特に①のようなケースでは有用な方法ですから、ためしてみてください。
2
+ 特に①のようなケースでは有用な方法ですから、ためしてみてください。
3
+
4
+ ==
5
+ ① A1:D7 の値を、11行目から、B,C,D,Aの列にコピーする操作をマクロ記録してみました。
6
+ A1:A7がB11:B17に、B1:B7がC11:C17に、C1:C7がD11:D17に、D1:D7がA11:A17にコピーされる例です。
7
+
8
+ ```Excel VBA
9
+ Sub 列を入れ替えてコピーする()
10
+ '
11
+ ' 列を入れ替えてコピーする Macro
12
+ '
13
+
14
+ '
15
+ Range("A1:A7").Select 'A1:A7を選択して
16
+ Application.CutCopyMode = False
17
+ Selection.Copy 'コピーして
18
+ Range("B11").Select '行き先のB11セルを選択して
19
+ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
20
+ :=False, Transpose:=False '値を貼付けする(B11:B17にA1:A7の値がコピーされる)
21
+ '以下、同様のコードでB1:B7がC11:C17に、C1:C7がD11:D17に、D1:D7がA11:A17にコピーされます。
22
+ Range("B1:B7").Select
23
+ Application.CutCopyMode = False
24
+ Selection.Copy
25
+ Range("C11").Select
26
+ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
27
+ :=False, Transpose:=False
28
+ Range("C1:C7").Select
29
+ Application.CutCopyMode = False
30
+ Selection.Copy
31
+ Range("D11").Select
32
+ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
33
+ :=False, Transpose:=False
34
+ Range("D1:D7").Select
35
+ Application.CutCopyMode = False
36
+ Selection.Copy
37
+ Range("A11").Select
38
+ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
39
+ :=False, Transpose:=False
40
+ End Sub
41
+ ```
42
+
43
+ こうゆう七面倒くさいVBAが自動的に作られるのが、マクロ記録の良いところです。
44
+ (上記のコードは、マクロの記録で得られたVBAのコードに、動作を説明するコメントを追加したものです。