2015-11-03 100 views
1

我试图循环浏览工作簿,获取一些值并将其存储在其他工作表中。以下是我的代码。 Keepp获得VBA对象变量或使用块变量未设置错误。“对象变量或未设置块变量”

有人可以帮我找出哪里错了吗?

Sub analysis() 

Dim i As Integer 
Dim ws As Worksheet 

For i = 4 To 197 
    ws = ActiveWorkbook.Sheets(i) 
    ws.Cells(1, 9) = ìstandardevî 
    ws.Cells(2, 9) = Application.WorksheetFunction.StDev(Range("D3:D34")) 
    ActiveWorkbook.Sheets(4).Cells(2, 1) = ws.Cells(2, 1) 
    Sheets(4).Cells(2, 2) = ws.Cells(3, 8) 
    Sheets(4).Cells(2, 3) = ws.Cells(2, 9) 
Next i 


End Sub 

回答

4

在For/Next循环内的第一行是这样的:

ws = ActiveWorkbook.Sheets(i) 

它更改为这样:

Set ws = ActiveWorkbook.Sheets(i) 
+0

在VBA中,这不是一个基本类型任何变量(数,字符串,日期等)必须是“SET”,而不是仅分配给。我经常在一段时间后返回VBA时忘记这一点。 – JamesFaix

+0

您也可以像这样“Dim mySheet as Worksheet:Set mySheet = ActiveWorkbook.Sheets(1)”来执行“内联”设置。这对你当前的循环情况没有帮助,但可以很方便。 – JamesFaix

+1

@CarlFriedRiceGauss只有对象变量必须被设置,并且只有当变量被调暗时没有使用New关键字。你的主张过于宽泛。 –

相关问题