2016-04-30 155 views
1
Sub DataInputBox() 

    Dim Id As Integer 
    Dim Name As String 
    Dim gender As String 

    Id = InputBox("Enter in your id") 
    Name = InputBox("Enter in your Name") 
    gender = InputBox("Enter in your gender") 

    Sheets(2).Range("a1").End(xlDown).Offset(1, 0).Value = Id 
    Sheets(2).Range("a1").End(xlDown).Offset(1, 1).Value = Name 
    Sheets(2).Range("a1").End(xlDown).Offset(1, 2).Value = gender 

End Sub 

我在执行excel时遇到上述代码的运行时错误。错误: - 运行时错误'1004'

Error:- Run-time error '1004' Application-defined or object-defined error

+0

'msgbox(Sheets(2).Range(“a1”)。End(xlDown).Address)'告诉你什么? – KekuSemau

+0

它会给出A列中的最后一个单元格地址。 –

+0

第二张工作表的A列中是否有任何内容?如果** xlDown **已将您带到工作表的底部,则无法向下偏移1行。 – Jeeped

回答

1

你需要一些材料存在于一个Sheet2中。与开始:

enter image description here

我跑你的代码(RAN无误差)并获得:

enter image description here

只要确保你有适当的板材合理的数据。

3

尝试,因为,

Sheets(2).Range("a" & rows.count).End(xlUP).Offset(1, 0).Value = Id 
Sheets(2).Range("a" & rows.count).End(xlUP).Offset(0, 1).Value = Name 
Sheets(2).Range("a" & rows.count).End(xlUP).Offset(0, 2).Value = gender 
+2

另请参阅http://stackoverflow.com/a/11169920/6216216为什么这比使用'End(xlDown)'更好。 – Leviathan

0

试试下面

Sheets(2).Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1).Value = ID 
Sheets(2).Range("B" & Range("A" & Rows.Count).End(xlUp).Row).Value = Name 
Sheets(2).Range("C" & Range("A" & Rows.Count).End(xlUp).Row).Value = gender 
0

只是为了好玩第四方案:

Sub DataInputBox() 

    Dim Id As Long 
    Dim xName As String 
    Dim gender As String 

    Id = InputBox("Enter in your id") 
    xName = InputBox("Enter in your Name") 
    gender = InputBox("Enter in your gender") 

    Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 3).Value = Array(ID, xName, gender) 


End Sub 

但是,最好不要声明Name作为变量或VBA可能会搞砸,因为每个对象都有它作为属性。 ;)

+0

您能否详细解释一下resize命令并给出简单示例 –

+0

@saikrishna请查看[MSDN-help center](https://msdn.microsoft.com/en-us/library/office/ff193274.aspx)。如果你仍然没有得到它,只要告诉我,我会尽力解释它;) –

+0

谢谢... Reichel,我需要一个更多的例子PLZ ... –