2016-11-07 77 views
-2

我从这个声明中得不到任何东西,我对Excel中的VBA很陌生。请帮我理解为什么。运行代码时什么都没发生

Sub Import() 

Dim i As Integer 

For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 

    If sheet1.Cells(i, 1).Value > 99 And sheet1.Cells(i, 1).Value < 10000 Then 
    sheet1.Range("A" & i).Copy 
    Sheet2.Range("A" & i).PasteSpecial 

    End If 

Next i 

End Sub 

谢谢您事先

+1

你不能做'然后......并且......'。 –

+0

^我也没有看到...... –

+1

@DougCoats我会加到你的回答:) –

回答

1

Dim sheet1 As sheet1 

应该

Dim sheet1 as Worksheet 

上也是如此Sheet2的:)

您还需要为签署东西,这些对象,否则你会得到一个必选对象错误,因此,例如:

Set sheet1 = Worksheets("your sheet name") 
Set sheet2 = Worksheets("some other sheet name") 

另外:你不能这样做Then ... And ...

And是一个用于布尔表达式的逻辑运算符。它不会在If块中加入两个表达式。相反,这样做:

If sheet1.Cells(i, 1).value > 99 And sheet1.Cells(i, 1).value < 10000 Then 
    sheet1.Range("A" & i).Copy 
    sheet2.Range("A" & i).PasteSpecial 

End If 
+0

从技术上讲,'sheet1'和'sheet2'不需要'昏暗',假设它们是有效的工作表代码名,你可以直接引用它们: ) –

+0

噢好吧。我做了更改,但仍然出现语法错误 –

+0

@GregoryEaton查看Doug的答案的最新修订。您尚未将工作表变量分配给任何对象。 –

相关问题