请允许我先解释一下场景...
我们有一个报告电子表格,能够更新几种不同措施的月度数据。
随着时间的推移,添加了越来越多的宏,现在总计超过 20 个。
为了使工作更轻松,我添加了另一个宏,它会打开一个用户表单,
一个一个地调用其他每个宏,并显示一个进度条来指示已经完成了多少任务(宏)。
前 8 个宏在输入框的提示下调用,其中包含正在更新哪个月份的输入框 - 这将始终是所有 8 个中的同一个月份。
所以,我想要做的是添加一个全局输入框作为用户窗体做的第一件事,然后在其他宏中引用这个输入(删除了他们的个人提示)。
老实说,我完全不知道如何做到这一点,但尝试了以下(一起)。
在工作簿中
Public Monthglobal As Variant
在用户表单代码的开头
Function GetMonth()
Monthglobal = InputBox("Please enter the 3 letter abbreviation for the Month which your are updating (e.g. Jan, Feb...)", "Month")
If strName = vbNullString Then Exit Function
End Function
在用户窗体 Sub 的开头,它一一调用宏
GetMonth
在 8 个宏中的每一个中(包含在模块 1 中)
'Searches for correct column for month and pastes data
Selection.Find(What:=Monthglobal, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 0).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Searches for correct column for month and pastes data
结果
运行时错误“91”:对象变量或未设置块变量
返回错误并突出显示搜索(用于变量)部分:
Selection.Find(What:=Monthglobal, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
我希望这足以理解它,如果有人需要查看更多单个宏的代码,请大声疾呼,但我认为错误消息清楚地表明问题出在哪里......对我缺乏的人来说不是什么经验!
提前致谢,