【发布时间】:2016-06-04 02:03:04
【问题描述】:
我在运行以下代码时遇到的问题是,当我完整运行宏时(通过按 F5、从分配给它的按钮调用它或从宏栏运行它)我收到:
运行时错误“91”:对象变量或未设置块变量。
但是,当我逐行运行调试器时,代码运行得非常好。在下面的代码中,调试器期间突出显示的行在星号“...code...”和 LastRow.Sheet1.Columns...
中概述这个宏的基本前提是它会自动对列进行排序,以确保条目位于我在另一张工作表上的表单控制列表框的顶部。第二部分代码(“PopulateListBox”下方)旨在将这些数据点拉入列表框中。
如果您能提供任何帮助,我将不胜感激。
代码:
Sub Filter
Sheet2.Select
ActiveWorkbook.Worksheets("Data").Autofilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Data").Autofilter.Sort.SortFields.Add _
Key:=Range("K2"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Data").Autofilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheet1.Columns("M").ClearContents
Sheet2.Columns("Z").ClearContents
Sheet1.Columns("L").Copy
Sheet1.Columns("M").PasteSpecial xlPasteValues
Sheet2.Columns("Z").PasteSpecial xlPasteValues
SendKeys ("{ESC}")
Sheet1.Range("M1") = "Hardcoded Values"
Sheet2.Range("A1").Select
'PopulateListBox
Set lb = Sheet2.Shapes("List Box 1")
Dim LastRow As Integer
**LastRow = Sheet1.Columns("M").Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlValues).Row**
'MsgBox LastRow 'used to verify the above code was working correctly, commented out to speed up process
lb.ControlFormat.RemoveAllItems
lb.ControlFormat.ListFillRange = "Z2:Z" & LastRow
End Sub
【问题讨论】:
-
哪一行?没有加粗的。
-
而不是
SendKeys ("{ESC}")使用Application.CutCopyMode = False -
嗨,斯科特,我很抱歉。我试图对代码应用粗体,但它没有用。有问题的行靠近底部并以 LastRow.Sheet1.Columns 开头,并由星号(代码中不存在)勾勒出来。
-
既然你知道这个专栏,试试这个,
LastRow = Sheet1.Range("M" & Sheet1.Rows.Count).End(xlUp).Row。 -
嗨,斯科特,感谢您的帮助!您的第二个建议没有解决问题,但您从 SendKeys ("{ESC}") 移动到 Application.CutCopyMode = False 的第一个建议成功了。我不太确定为什么,如果你能解释一下那就太好了!否则,谢谢你的建议!你帮我省了很多麻烦。