2017-03-01 160 views
-1

我目前正試圖在一個工作簿中創建一個簡單的數據錄入數據庫系統。有兩張表,一張名爲'newEntry',另一張名爲'Data'。Excel宏 - 對象'_Worksheet'的方法'範圍'失敗

我有一個命令按鈕,宏指定給它。模塊下模塊中的代碼如下:

Application.ScreenUpdating = False 

Dim newEntry As Worksheet 
Dim Data As Worksheet 

Dim lastrowIndex As Double 
Dim firstBlank As Double 

Set newEntry = Worksheets("newEntry") 
Set Data = Worksheets("Data") 

lastrowIndex = Data.Range("C2").End(xlDown).Row 

firstBlank = lastrowIndex + 1 

newEntry.Range("C2:C8").Copy 

Data.Range("A" & firstBlank).Value = firstBlank - "2" 
Data.Range("B" & firstBlank).PasteSpecial Transpose:=True, SkipBlanks:=False 

newEntry.Range("C2:C8").Clear 

Application.CutCopyMode = False 
Application.ScreenUpdating = True 

在測試出代碼時,我不斷收到上述錯誤。我看過其他各種解決方案,並嘗試調整我的代碼,但沒有任何作用。請幫助建議這裏有什麼問題。命令按鈕位於[newEntry]中,具有要複製的值的單元格也是如此。

編輯:錯誤指針指向以下行Data.Range( 「A」 & firstBlank).value的= firstBlank - 「2」

請告知可能是什麼問題!

+1

下只有空單元格應該是'= firstBlank - 2'。此外,您應該調暗Long而不是Double –

+1

C2是包含我的列標籤(Customer)的單元格。我希望代碼向下看,找到該列中的第一個空單元格(從而指向下一個單元格),以便將我的值放在那裏。 – DG85

+0

@chrisneilsen我試過這樣做。它返回相同的錯誤。 – DG85

回答

1

添加一個檢查,看看你打的最後一行中的列應列C具有第2行

lastrowIndex = Data.Range("C2").End(xlDown).Row 
If lastrowIndex = Data.Rows.Count Then lastrowIndex = 2 '<--| if you hit the last row in the column then set lastrowIndex to "header" row index 
firstBlank = lastrowIndex + 1 
+0

非常感謝!代碼工作像魔術一樣!不知道爲什麼我的原始代碼從圖表中出現並顯示出這樣一個奇怪的行號。非常感謝再次! – DG85

+1

不客氣。你的代碼因爲在C2下面有空單元而退出了chart_,所以'.End(xlDown).Row'碰到了列的底部單元格,返回了它的行索引,'lastrowIndex + 1'超過了它。 'Data.Range(「C2」).End(xlDown)''的行爲與您選擇C2然後按CTRL + ArrowDown的行爲相同' – user3598756

相關問題