我正在为我的部门开展一个小项目,但我遇到了一段我无法弄清楚的vba代码。
我正在尝试使用输入框并在相同的代码中查找以搜索所选范围内的日期。在找到日期之后,我希望代码选择整个列以及之后的下一个7并复制到不同的工作簿。 我可以计算出代码来传输复制的数据,我无法通过查找和选择。
我总是得到错误"运行时错误91,对象变量或没有设置块变量"。
代码如下:
Dim iDate As String
iDate = Application.InputBox("Insert Last Sundays Date")
rows("1:1").Select
Selection.Find(What:=iDate, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
在这件事情上有任何帮助我会非常感激。
谢谢。
编辑:我已经设法找出为什么我得到了这个错误,我的Dim错了我现在把它作为Date而不是字符串。但是我无法弄清楚选择部分。编辑#2:
(图片因隐私而被删减。)
代码更新:
Dim iDate As Date
Dim eDate As Object
rows("1:1").Select
iDate = Application.InputBox("Insert Last Sunday's Date")
Selection.Find(What:=iDate, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Set eDate = ActiveCell
eDate.EntireColumn.Select
答案 0 :(得分:0)
问题的至少一部分是你(在没有找到日期的情况下)尝试激活Nothing
,这是不可能的。这就是原始错误消息背后的内容("运行时错误91,对象变量或未设置块变量"。)为了防范这种情况,请执行以下操作:
Sub test()
Dim iDate As Date
Dim R As Range
iDate = Application.InputBox("Insert Last Sunday's Date")
Rows("1:1").Select
Set R = Selection.Find(What:=iDate, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not R Is Nothing Then R.Activate
End Sub
您的意见表明您还有其他问题,但这将解决一个潜在的问题。