【问题标题】:Why does an "unknown runtime error" occur while executing End(xlDown) in VBScript?为什么在 VBScript 中执行 End(xlDown) 时会出现“未知的运行时错误”?
【发布时间】:2017-09-14 06:17:09
【问题描述】:

为什么在 VBScript 中执行 End(xlDown) 时会出现“未知的运行时错误”?

Dim objExcel, objSheet, pbjPath, objBook
objPath="C:\Users\Documents\automateexcel.xls"

Set objExcel = CreateObject("Excel.Application")
Set objBook = objExcel.Workbooks.Open(objPath)
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

objSheet.Cells(1,1).Value = "Punter"
objExcel.Range("A1").End(xlDown).Offset(1,1).Value = "14"

objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close

objExcel.Range("A1").End(xlDown).Offset(1,1).Value = "14" 行被写入以用值 14 填充第一列中的第一个空单元格。我可以硬编码到工作表中的任何单元格中。但是这种xlDown 填充空单元格的方法会导致未知的运行时错误。

C:\Try\automateexcel.vbs(9, 1)
Microsoft VBScript 运行时错误:未知的运行时错误

【问题讨论】:

  • objSheet.Range("A1")...
  • 没有改善斯科特。 objSheet.Range("A1") 仍然抛出同样的未知错误
  • A 列是否至少在第 2 行有数据?如果不是,您将转到页面底部并尝试多走一行。尝试从底部开始,然后向上:objSheet.Range("A60000").End(xlUp).Offset(1,1).Value = "14"
  • vbscript 不知道xlDown 是什么。将Option Explicit 放在最上面。
  • .End(xlDown) -> .End(-4121)

标签: excel vbscript vba


【解决方案1】:
    Dim objExcel As Object, objSheet As Worksheet, pbjPath As Object, objBook As Object
    Dim rcount As Long

    objPath = "C:\Users\Documents\automateexcel.xls"

    Set objExcel = CreateObject("Excel.Application")
    Set objBook = objExcel.Workbooks.Open(objPath)
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

    objSheet.Cells(1, 1).Value = "Punter"
    rcount = objSheet.Cells(Rows.Count, "A").End(xlUp).Row
    If rcount = 1 Then objSheet.Range("A1").Offset(1, 0).Value = "14" Else _
        objSheet.Range("A1").End(xlDown).Offset(1, 0).Value = "14"

    objExcel.ActiveWorkbook.Save
    objExcel.ActiveWorkbook.Close
End Sub

【讨论】:

  • 这不会解决问题,但会引发不同的(附加)错误,因为 VBScript 不支持类型变量定义 (Dim variable As type)。
猜你喜欢
  • 2012-12-09
  • 1970-01-01
  • 2022-06-20
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 2011-03-26
  • 2014-09-16
  • 2012-12-12
相关资源
最近更新 更多