2015-11-03 103 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關鍵字。你的主張過於寬泛。 –

相關問題