【发布时间】:2019-07-08 08:54:44
【问题描述】:
VBA 新手。这两天一直在寻找答案,但没有找到真正问我想要答案的问题。
我正在使用在我的一张工作表中填充表格的用户窗体。
我的问题在 Sub UserForm_Initialize() 内。我要做的第一件事就是找出我在我的 DataBodyRange 中的最后一行(顺便说一下,第一列)是否包含一个 ID 号。
如果是这样,那么我就取那个值,加一个,然后在我的用户窗体中填充一个文本框。
但是,如果表格包含标题和一个空行,我想用数字 1 填充 TextBox(通过另一个子将添加到该空行),但我的代码停止工作并出现错误。
使用以下代码我得到错误
运行时错误“91”:对象变量或未设置块变量
Private Sub UserForm_Initialize()
Dim tbl As ListObject, rng As Range
Set tbl = Worksheets("Sheet1").ListObjects("table1")
Set rng = tbl.ListColumns("ID").DataBodyRange
If IsEmpty(rng.Cells.Find("*", LookIn:=xlValues,_
SearchOrder:=xlByRows,_
SearchDirection:=xlPrevious).Value) Then
Me.textBox.Value = 1
Else
Me.textBox.Value = rng.Cells.Find("*", LookIn:=xlValues,_
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Value + 1
End If
End Sub
我不明白我找到的关于错误代码或如何修复它的解释。我认为错误与rng.Cells.Find... 有关,因为那是在单步执行代码时出现错误的时候,但我可能一辈子都不明白为什么。
【问题讨论】:
-
我相信这将是
nothing不为空。 :也看.end(xlUp).row -
添加到@Nathan_Sav 评论,您将执行两次相同的搜索:一次用于您的
IF条件,然后更新您的文本框。我会声明一个range变量并将其设置为您的搜索结果。然后在您的IF条件和分配中使用它
标签: excel vba find listobject