Option Explicit
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2015/6/28 ユーザー名 : isamG2
'
'
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Sheet2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Sheet1").Select
Application.CutCopyMode = False
Range("A1").Select
Sheets("Sheet2").Select
Range("A1").Select
Sheets("Sheet1").Select
End Sub
Sub Macro2()
'
' Macro2 Macro
' マクロ記録日 : 2015/6/28 ユーザー名 : isamG2
'
'
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Sheet3").Select
Range("E5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E5").Select
Sheets("Sheet1").Select
Range("A1").Select
Application.CutCopyMode = False
End Sub
Sub test()
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Worksheets("Sheet1").Range("A1:E4")
Set rng2 = Worksheets("Sheet2").Range("F5")
rng1.Copy rng2
Set rng1 = Nothing
Set rng2 = Nothing
End Sub
Sub test2()
Dim rng1 As Range
Dim rng2 As Range
'Set rng1 = Worksheets("Sheet1").Range(Cells(1, 1), Cells(4, 5))
Set rng1 = Range(Cells(1, 1), Cells(4, 5))
Set rng2 = Worksheets("Sheet2").Range("F5")
rng1.Copy
rng2.PasteSpecial Paste:=xlPasteValues
Set rng1 = Nothing
Set rng2 = Nothing
End Sub
Macro1とMacro2はキーボード操作をそのまま記録したものです。それはそれで
正解なんでしょうが、思うに任せないのがコピー先の書式設定です。PasteSpecial
以下がそうなんでしょう。
testとtest2は幾分VBAらしくすればこんな感じというところでしょうか?Range変数に
就いては使わなくても良いのですが、以後の勉強のため使いました。testに就いては
まあ納得ですが、test2に就いては多少混乱の要素有りです。
コメントアウトしてますが、これだとエラーになるんですよ。アクティブなワークシートに
Worksheets("Sheet1").Range(Cells(1, 1), Cells(4, 5))と書けないようです。
Range(Cells(1, 1), Cells(4, 5))と書くのが良いようです。
もう一つ分からないことが有りました。それはPasteSpecialをどう書くのかと言うことです。
rng1.Copy rng2 と1行に書いても、コピー自体は出来ます。しかしPasteSpecialの
指定が分かりませんでした。こうすれば出来ましたよ。
rng1.Copy
rng2.PasteSpecial Paste:=xlPasteValues
後から見れば確かにキーボードマクロでもそうなってます。(^0^)
※コメント投稿者のブログIDはブログ作成者のみに通知されます