2012-07-03 204 views
2

我正在以下錯誤消息使用的變量。VBA方法「對象的範圍」 _Worksheet失敗範圍聲明

下面是我的代碼片段:

Private Function copyAmount(startRange As Integer, endRange As Integer) 
    Dim startRng As String 
    Dim endRng As String 

    startRng = "A" & Str(startRange) 
    endRng = "A" & Str(endRange) 

    activateBook ("book2.xlsm") 
    Set rng = Range(startRng, endRng) 
    Workbooks("book2.xlsm").Sheets(1).Range(rng).Select 
    Selection.Copy 
    activateBook ("Book1.xlsm") 
    Range("D3").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, _ 
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
End Function  

任何幫助將不勝感激。

+0

如果更換'和'rng.Select'範圍(RNG).Select'(即它已經* *一個'Range')假設'rng'已經被定義爲你的特定錯誤不會發生MS Excel 2010中的'Range'變量。 – ecoe

回答

7

你所得到的錯誤,因爲你沒有完全限定的範圍。也沒有必要激活一個工作簿做一個複製粘貼:)你也不需要這個Function。使用Sub

這是你正在嘗試的(UNTESTED)?

Private Sub copyAmount(startRange As Integer, endRange As Integer) 
    Dim wbT As Workbook, wbO As Workbook 
    Dim rng As Range 

    Set wbT = ThisWorkbook 
    Set wbO = Workbooks("book2.xlsm") 

    Set rng = wbO.Sheets(1).Range("A" & startRange & ":" & "A" & endRange) 
    rng.Copy 

    '~~> Change Sheets(1) below to the relevant sheet 
    wbT.Sheets(1).Range("D3").PasteSpecial Paste:=xlPasteValues, _ 
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
End Sub 

EDIT

Sub,像Function程序,是可以獲取參數,執行一系列語句,以及改變其參數值的獨立過程。但是像Function做了Sub過程不返回值。

+0

非常感謝,非常有幫助! – user1155383

0

相反的Str,使用Cstr。這將使你的代碼的工作,我猜...

0

當你的代碼是在一個工作表,而不是一個模塊,您將收到此錯誤。

相關問題