VBA Excel:运行时错误'1004'对象'_'工作表''faile的方法'范围'

时间:2015-05-19 18:30:44

标签: excel vba excel-vba

我正在尝试清除从工作表1复制到工作表2的最后一行之后的50行。因此,工作表2中的最后一行数据应该总是有50个空白行。

Public copied_row_count As Integer
Public ws1 As Worksheet
Public ws2 As Worksheet
Sub Button1_Click()

'Defining the constants below. Change if need based on the value definitions'

Dim Test_Set_Colmn_Number As Integer                                                            'Defining the value of the Cylinder Test Set column number'
Test_Set_Colmn_Number = 23                                                                      'W is the current column with the cylinder test set values'

Set ws1 = ThisWorkbook.Sheets("Concrete Log")
Set ws2 = ThisWorkbook.Sheets("Concrete Tracking Graphs")

copied_row_count = 1
Dim j As Integer
j = 0

For i = 1 To Rows.count
    If Not IsEmpty(Cells(i, Test_Set_Colmn_Number).Value) Then
        ws1.Rows(i).Copy _
        ws2.Rows(copied_row_count)
        copied_row_count = copied_row_count + 1
    End If
Next i

Do While j < 50
    ws2.Range("copied_row_count + j:copied_row_count + j").Clear
    j = j + 1
Loop

End Sub

我已将错误缩小到变量 copied_row_count 及其在

中的使用
ws2.Range("copied_row_count + j:copied_row_count + j").Clear

谢谢!

3 个答案:

答案 0 :(得分:1)

您在引号内使用变量名称,因此它们被视为文字文本。

如果您要清除(copied_row_count + j)处的行,可以使用以下行:

ws2.Rows(copied_row_count + j).ClearContents

答案 1 :(得分:0)

这应该是变量和字符串的组合:

ws2.Range(copied_row_count & j & ":" & copied_row_count + j).Clear

就像之前(ws2.Range("copied_row_count + j:copied_row_count + j").Clear)一样,你实际上正在搜索明显不存在的范围copied_row_count & j & : & copied_row_count + j - &gt;对象定义错误。

答案 2 :(得分:0)

您编写范围查找的方式是查找字面上标记为"copied_row_count + j:copied_row_count + j"的范围。如果它在引号中,则不使用该变量。我认为你实际上可以替换你的整个循环。

删除Do循环并尝试此行

ws2.Range(copied_row_count & ":" & copied_row_count + 50)