2017-03-01 173 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

相关问题