iSAMrx72's 思い付きBlog

今、新しいアカウントではじめました、への投稿となります。https://blog.goo.ne.jp/isamrx72

Excelのコピーやって見ました。

2015-07-01 17:14:32 | プログラミング言語

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^)

 



最新の画像もっと見る

コメントを投稿