【问题标题】:Error:- Run-time error '1004'错误:- 运行时错误“1004”
【发布时间】:2019-03-18 03:54:15
【问题描述】:
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” 应用程序定义或对象定义的错误

【问题讨论】:

  • msgbox(Sheets(2).Range("a1").End(xlDown).Address) 告诉你什么?
  • 它将给出A列中的最后一个单元格地址。
  • 第二个工作表的 A 列中是否有任何内容?如果 xlDown 已将您带到工作表的底部,则您不能向下偏移 1 行。
  • 对,这就是我的意思,如果 A 列是空的,而且如果只有一个值,你会跳到工作表的末尾,不能进一步 offset
  • 好的,谢谢。但是我如何将“ID”值放在最后一个单元格(A 列)

标签: vba excel


【解决方案1】:

试试看,

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】:

Sheet2A 列中需要有一些材料。开始于:

我运行了你的代码(运行没有错误)得到:

请确保您在正确的表格中有合理的数据。

【讨论】:

    【解决方案3】:

    试试下面的

    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
    

    【讨论】:

      【解决方案4】:

      第四个解决方案只是为了好玩:

      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 可能会搞砸,因为每个对象都将它作为属性。 ;)

      【讨论】:

      • 能否请您解释一下有关调整大小命令的更多信息并给出简单的示例
      • @saikrishna 请检查MSDN-help center。如果您仍然不明白,请告诉我,我会尽力解释它;)
      • 好的。 Range("C4:K99").Resize(22,15) 将是 C4:Q25。左上角单元格(C4)将保持不变,而新范围的高度和宽度直接在调整大小部分给出。您也可以省略Range("C4:K99").Resize(,15) 之类的参数来获取C$4:$Q$99 的范围。
      • 我明白了,我不想在 resize 命令中放入确切的值,我想在下面的代码中使用 columns.count 函数。你能写... Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 3).Value = Array(ID, xName, gender)
      • 出于什么原因你会在那一行使用columns.count?您正在寻找 A 列中的最后一个单元格。columns.count 可能会选择 XFD 列,您为什么要在那里?也在Resize-part 然后更好地使用.EntireRow 来获取所有列;)
      猜你喜欢
      • 2018-07-07
      • 1970-01-01
      • 2015-12-06
      • 2016-03-25
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多