使用相对引用复制并粘贴到VBA中? (错误代码1004)

时间:2014-08-19 14:24:09

标签: excel vba excel-vba copy-paste

这个论坛的新用户很抱歉,如果这是关闭的话。我试图将单元格值从书中的一个工作表简单复制到另一个工作表,但是需要使用相对单元格引用,因为要复制/粘贴的行数会根据输入的数据而变化。 / p>

到目前为止(非常简单)的代码是:

Sub SuitorList()

'Defining Variables
Dim Row As Integer
Row = Sheets("References").Cells(6, 2).Value

'Copying Statistics
Sheets("Charts").Range(Cells(1, 1), Cells(Row, 1)).Value = _      
Sheets("Data").Range(Cells(1, 1), Cells(Row, 1)).Value

End Sub

当我使用绝对单元格引用(即" B1:B7")时,此代码工作正常,但当我使用相对引用时,我收到错误代码1004:应用程序定义或对象定义错误。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

如果要将数据从一个工作表复制到另一个工作表,并且要复制/粘贴的数据量总是在变化,那么我会做这样的事情。这是过滤选择表中的数据,然后通过查找第一个空白单元格将其复制并粘贴到目标表单。你可能不得不把这个搞得一团糟,但这是一个好的开始。

'Defining Variables
Dim Row As Integer
Row = Sheets("References").Cells(6, 2).Value

'switches the sheet
Sheets("Charts").Select

'filters a table based on the value of the Row variable
ActiveSheet.ListObjects("Table1").range.AutoFilter Field:=1, Criteria1:= _
  range("Row"), Operator:=xlAnd

'moves to the first cell in the filtered range
range("A1").Select

'selects all values in the range and copies to clipboard
range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy

'switches the sheet back to data sheet
Sheets("Data").Select

'finds the first blank cell in the declared range you want to paste into
ActiveSheet.range("A:A").Find("").Select

'pastes the selection
ActiveSheet.Paste

答案 1 :(得分:0)

感谢您的帮助。我能够找到一个使用以下代码的工作:

Sub SuitorList()

'Defining Variables
Dim Row As Integer
Row = Sheets("References").Cells(6, 2).Value

'Copying Statistics
For i = 1 To Row
Sheets("Charts").Range("A" & i).Value = Sheets("Data").Range("A" & i).Value
Next


End Sub

答案 2 :(得分:0)

替代解决方案:

如果您不是Loops的粉丝,请使用Worksheet.Cells Property

Sub SuitorList()    
'Defining Variables
Dim Row As Integer
Set wd = ThisWorkbook.Worksheets("Data")
Set wc = ThisWorkbook.Worksheets("Charts")
Row = Sheets("References").Cells(6, 2).Value

'Copying Statistics
Range(wd.Cells(1, 1), wd.Cells(Row, 1)).Copy Destination:=Range(wc.Cells(1, 1), wc.Cells(Row, 1))


End Sub