【发布时间】:2020-10-02 19:29:56
【问题描述】:
我为工作学院创建了一个工作簿(“Control Panel.xlsm”),用作我们在日常任务中使用的所有宏的存储位置。她不懂VBA。 其中一个宏(参见下面的代码)组织另一个工作簿,以便在表格末尾添加一个描述性列。
Dim lr As Long
lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
Dim tbl As ListObject
Dim wbNames As Variant, wb As Workbook, w As Workbook, El As Variant, boolFound As Boolean
wbNames = Split("January,February,March,April,May,June,July, August, September, October,November,December")
For Each w In Workbooks
For Each El In wbNames
If w.Name = "Docs_Tracker_" & El & " 2020.xlsm" Then
Set wb = w: boolFound = True: Exit For
End If
Next
Next
'1. Column AB - Descriptive Field - Client Name - Manager Name - Research Deliverable
If wb Is Nothing Then Stop
Set tbl = wb.Worksheets(1).ListObjects("Table_owssvr")
With tbl
.ListColumns.Add.Name = "Client Name - Manager Name - Research Deliverable"
End With
wb.Activate
Range("AB2:AB" & lr).FormulaR1C1 = "=CONCATENATE(RC[-22],"" - "",RC[-26],"" - "",RC[-15])"
我想做的是参考工作簿 ("Docs_Tracker_April 2020.xlsm") 以便即使工作簿参考名称发生更改(Docs_Tracker_May 2020、Docs_Tracker_June 2020 等),代码仍然可以工作
我已经尝试过 ActiveWorkbook,工作簿索引方法,但是它们可能会出现错误问题,并且对于不像我的工作学院那样熟悉 VBA 的人来说,它并不那么万无一失。
如果有人可以教我这个,我会将它应用到我所有的宏中,他们都有类似的问题。谢谢。
【问题讨论】:
-
是工作簿命名规则吗?您是否希望该过程适用于包含“January”、“February”等而不是“April”的任何工作簿名称?如果同时打开两个这样的工作簿呢?
-
所以不,只有两个工作簿会打开(“control panel.xlsm”和“Docs tracker取决于月份” - 我将在下面给出你给我的代码并返回你
-
不确定,问题是什么?您想将宏存储在一个工作簿中(并每月更改其名称)还是根据月份名称存储在多个工作簿中?你想更新链接还是什么?
-
我认为代码应该运行良好。如果您需要我将它集成到您的子中,这不会有问题,但我认为自己很容易做到这一点......您只需用我提供的代码替换
Set wb = Workbooks("Docs_Tracker_April 2020.xlsm"),但请正确声明必要的变量。 -
我的错误。我没有适当地修改拆分函数并在函数末尾添加(,,,)。谢谢