爲什麼這不起作用?運行時錯誤91?VBA運行時錯誤91:對象變量未設置?
Dim fornameCurr As String
Dim surnameCurr As String
Dim rowCurr As Long
rowCurr = 13
fornameCurr = Activesheet.Cells(rowCurr, 1) << ERROR HERE
surnameCurr = Activesheet.Cells(rowCurr, 2)
爲什麼這不起作用?運行時錯誤91?VBA運行時錯誤91:對象變量未設置?
Dim fornameCurr As String
Dim surnameCurr As String
Dim rowCurr As Long
rowCurr = 13
fornameCurr = Activesheet.Cells(rowCurr, 1) << ERROR HERE
surnameCurr = Activesheet.Cells(rowCurr, 2)
運行時錯誤91表明ActiveSheet Is Nothing
(因爲ActiveSheet
是唯一的推測對象在代碼的幾行您提供的,肯定只有對象於提高錯誤的行)。
幾種情況,我能想到的可能有助於此:
ActiveWorkbook
,也沒有ActiveSheet
。ActiveSheet
這不會在其他應用程序存在。ActiveSheet
與Dim Activesheet As Worksheet
連爲一體,忽略將工作表對象分配給該變量,因此默認爲Nothing
。分辨率:
Worksheet
對象變量和分配給它。我的猜測是#2 - 但我們真的不應該猜測。 OP需要提供更多細節。 –
好像他正在試圖通過一個位置參考爲一個字符串,這讓我覺得這就是問題。 fornameCurr = Activesheet.Cells(rowCurr,1)<> Dim fornameCurr As String。奇怪他沒有得到一個數據類型不匹配的錯誤? –
@DougCoats我不遵循你所說的......'ActiveSheet.Cells(rowCurr,1)'從該單元格返回'.Value',它可以轉換爲字符串數據類型,除非它是一個錯誤反而會引起錯配)。 –
該代碼是如何被調用的?從Excel或其他應用程序?它是否來自加載項? (如果是從Excel,而不是從一個外接,那麼這段代碼應該工作) –
我得到任何問題與你給的代碼。 –
A13的值是多少?這是一個錯誤嗎? – Vityata