use*_*844 3 excel vba runtime-error excel-vba
我有2个工作表:资产和概述.
这些功能都放在一个模块中.
Public Function GetLastNonEmptyCellOnWorkSheet(Ws As Worksheet, Optional sName As String = "A1") As Range
Dim lLastRow As Long
Dim lLastCol As Long
Dim rngStartCell As Range
Set rngStartCell = Ws.Range(sName)
lLastRow = Ws.Cells.Find(What:="*", After:=Ws.Range(rngStartCell), LookIn:=xlFormulas, _
Lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
MatchCase:=False).Row
lLastCol = Ws.Cells.Find(What:="*", After:=Ws.Range(rngStartCell), LookIn:=xlFormulas, _
Lookat:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
MatchCase:=False).Column
Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol))
End Function
Run Code Online (Sandbox Code Playgroud)
从工作表概述我打电话:
Set RngAssets = GetLastNonEmptyCellOnWorkSheet(Worksheets("Assets"), "A1")
Run Code Online (Sandbox Code Playgroud)
但我总是得到错误:
VBA:获取运行时1004:对象'_Worksheet'的方法'范围'失败
在线上:
Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol))
Run Code Online (Sandbox Code Playgroud)
工作表资产上有数据.最后使用的单元格是W9(lLastRow = 9,lLastCol = 23).
知道为什么这不起作用吗?
Dav*_*ens 14
这是你的问题陈述:
Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol))
Run Code Online (Sandbox Code Playgroud)
评估最里面的括号:
ws.Cells(lLastRow, lLastCol)
Run Code Online (Sandbox Code Playgroud)
这是一个范围,但范围的默认属性是它.Value.除非存在与此值对应的命名范围,否则将出现错误.
相反,尝试:
Set GetLastNonEmptyCellOnWorkSheet = Ws.Range(Ws.Cells(lLastRow, lLastCol).Address)
Run Code Online (Sandbox Code Playgroud)
或者您可以略微简化:
Set GetLastNonEmptyCellOnWorkSheet = Ws.Cells(lLastRow, lLastCol)
Run Code Online (Sandbox Code Playgroud)
小智 5
当我使用打击代码时,发生了同样的错误。
Dim x As Integer
Range(Cells(2, x + 13))
Run Code Online (Sandbox Code Playgroud)
将代码改为blow,错误消失。
Dim x As Integer
Range(Cells(2, x + 13).Address)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62801 次 |
| 最近记录: |