2013-05-28 42 views
2

從Office 2007更新到Office 2010後,在Excel 2007中完美工作但在2010年不工作的宏。具體而言,我在此行上收到錯誤:.End(xlDown).Row從Excel 2007更改爲2010

y = Worksheets("Raw Data").Range("A2").End(xlDown).Row 

Ther錯誤是「錯誤6溢出」。我意識到這是由於Excel選擇了Excel中最大數量(1048576)的行來創建溢出。這些行中只有975個數據。在2007年,它只選擇了包含數據的行。 我想知道是什麼導致了代碼從2007年到2010年的處理方式的變化?有沒有其他人經歷過這個?

+2

如果您在列2下面的第2列中有值,則代碼在任一版本的Excel中都應該相同。如果單元格A2以下沒有任何內容,則'y'將等於表單中的最後一行,如果'y'是'int',則會導致溢出錯誤。你可以發佈更多的上下文代碼嗎? A欄中的內容是什麼? –

回答

0

試試下面

With Worksheets("Raw Data") 
     y = .Range("A" & .Rows.Count).End(xlUp).Row 
    End With 
+0

@woody如果記錄超過32,767,只要用kazJaw回答,就需要聲明'y變量'。 – Santosh

1

確保y variable(和其他變量指的行號)被聲明爲Long,如:

Dim y As Long 

我能猜到你的變量是Integer在時刻。

我可以猜測,您可能已經從.xls遷移到.xlsm您的文件可能會導致一些問題。

+0

我知道這會阻止溢出,但我更感興趣的是爲什麼當只有975有數據時,它會在excel中選擇每一行。我對它爲什麼這樣做更感興趣。 – woody

+1

回答這個問題,我將需要看到整個代碼,文件和知道文件和代碼進化:) –

+2

在這種情況下,** Santosh **和** KazJaw **都是正確的,兩個答案都應該由OP 。 – tbur