我在VBA(Excel)中编写了以下代码,但它给出了错误的结果?

时间:2016-05-23 07:56:29

标签: excel-vba for-loop vba excel

我已在VBA中编写此代码:

Sub getdata()

    Dim x As Integer, y As Integer
    Dim rcell As Range

    Sheets("Material Data").Select

    With Sheets("Material Data")
        y = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

    For Each rcell In Range("C10:C62")
        If rcell > 1 Then rcell.Copy
        Sheets("Sheet1").Range("A" & y).PasteSpecial xlPasteValues
        y = y + 1
    Next rcell

End Sub

此代码的问题在于,在C10:C62范围内,只有6个值大于1(其中3个为65,另外3个为60)。但是这会以某种方式在sheet1中粘贴53个值,其中24个值为65,其余为60.我不知道从哪里得到53个值。

1 个答案:

答案 0 :(得分:1)

当您的值超过1时,您只想paste,但if-then语句仅包含Copy操作,但每个操作都执行paste操作细胞。尝试更改代码,如下所示:

If rcell > 1 Then 
    rcell.Copy
    Sheets("Sheet1").Range("A" & y).PasteSpecial xlPasteValues
    y = y + 1
End If