Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
518 views
in Technique[技术] by (71.8m points)

excel - Copy a selected range to another worksheet

I am using code below which I am trying to change so as not to use .select

Selection.Select ' from active worksheet
    Selection.Copy
    Sheets("Purch Req").Select
    Range("A1").Select
    ActiveSheet.Paste

I have tried using this but there is no output to the other worksheet.

Dim src2Range As Range, dest2Range As Range

    Set src2Range = Selection 'source from selected range

    Set dest2Range = Sheets("Purch Req").Range("A1").Resize(src2Range.Rows.Count, src2Range.Columns.Count) ' destination range _
    'in Purch req worksheet
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Here is good examples on How to avoid using Select in Excel VBA Link stackoverflow

Here is simples of

copy/paste - values = values - PasteSpecial method

Option Explicit
'// values between cell's
Sub PasteValues()

    Dim Rng1 As Range
    Dim Rng2 As Range

    Set Rng1 = Range("A1")
    Set Rng2 = Range("A2")
    Rng2.Value = Rng1.Value

    'or
    [A2].Value = [A1].Value

    'or
    Range("A2").Value = Range("A1").Value

    'or
    Set Rng1 = Range("A1:A3")
    Set Rng2 = Range("A1:A3")
    Rng2("B1:B3").Value = Rng1("A1:A3").Value

    'or
    [B1:B3].Value = [A1:A3].Value


    '// values between WorkSheets
    Dim xlWs1 As Worksheet
    Dim xlWs2 As Worksheet

    Set xlWs1 = Worksheets("Sheet1")
    Set Rng1 = xlWs1.Range("A1")

    Set xlWs2 = Worksheets("Sheet2")
    Set Rng2 = xlWs2.Range("A1")
    Rng2.Value = Rng1.Value

    'or
    Set Rng1 = [=Sheet1!A1]
    Set Rng2 = [=Sheet2!A1]
    Rng2.Value = Rng1.Value

    'or
    [=Sheet2!A1].Value = [=Sheet1!A1].Value

    'or
    Worksheets("Sheet2").Range("A2").Value = Worksheets("Sheet1").Range("A1").Value

    '// values between workbooks
    Dim xlBk1 As Workbook
    Dim xlBk2 As Workbook

    Set xlBk1 = Workbooks("Book1.xlsm")
    Set Rng1 = xlBk1.Worksheets("Sheet1").Range("A1")

    Set xlBk2 = Workbooks("Book2.xlsm")
    Set Rng2 = xlBk2.Worksheets("Sheet1").Range("A1")
    Rng2.Value = Rng1.Value

    'or
    Set Rng1 = Evaluate("[Book1.xlsm]Sheet1!A1")
    Set Rng2 = Evaluate("[Book2.xlsm]Sheet2!A1")
    Rng2.Value = Rng1.Value

    'or
    Evaluate("[Book2.xlsm]Sheet2!A1").Value = Evaluate("[Book1.xlsm]Sheet1!A1")

    'or
    Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").Value = _
        Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value


End Sub

Simple copy/paste

Sub CopyRange()
    Dim Rng1 As Range
    Dim Rng2 As Range

    Set Rng1 = Range("A1")
    Set Rng2 = Range("A2")
    Rng1.Copy Rng2

    [A1].Copy [A2]

    Range("A2").Copy Range("A1")

    '// Range.Copy to other worksheets
    Dim xlWs1 As Worksheet
    Dim xlWs2 As Worksheet

    Set xlWs1 = Worksheets("Sheet1")
    Set Rng1 = xlWs1.Range("A1")
    Set xlWs2 = Worksheets("Sheet2")
    Set Rng2 = xlWs2.Range("A1")
    Rng1.Copy Rng2

    Set Rng1 = [=Sheet1!A1]
    Set Rng2 = [=Sheet2!A1]
    Rng1.Copy Rng2

    [=Sheet1!A1].Copy [=Sheet2!A1]

    Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet2").Range("A1")

    ''// Range.Copy to other workbooks
    Dim xlBk1 As Workbook
    Dim xlBk2 As Workbook

    Set xlBk1 = Workbooks("Book1.xlsm")
    Set Rng1 = xlBk1.Worksheets("Sheet1").Range("A1")
    Set xlBk2 = Workbooks("Book2.xlsm")
    Set Rng2 = xlBk2.Worksheets("Sheet2").Range("A2")
    Rng1.Copy Rng2


    Evaluate("[Book1.xlsm]Sheet1!A1").Copy Evaluate("[Book2.xlsm]Sheet2!A2")

    Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy _
    Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1")

End Sub

PasteSpecial method

Sub PasteSpecial()

    'Copy and PasteSpecial a Range
    Range("A1").Copy
    Range("A3").PasteSpecial Paste:=xlPasteFormats

    'Copy and PasteSpecial a between worksheets
    Worksheets("Sheet1").Range("A2").Copy
    Worksheets("Sheet2").Range("A2").PasteSpecial Paste:=xlPasteFormulas

    'Copy and PasteSpecial between workbooks
    Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy
    Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteFormats

    Application.CutCopyMode = False

End Sub

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...