【发布时间】:2017-06-01 15:06:23
【问题描述】:
我对 VBA 很陌生(3 天的经验),我浏览了几个论坛,但找不到解决方案。
我有 2 个工作簿。 “主”工作簿有一个摘要表,其中 A 列 - 名称列表超链接到同一工作簿中的每个空白表,选项卡的标签与列中的名称相同。 B 列有 1 种颜色或颜色组合 - 有 5 种选项(红色、蓝色、绿色、蓝色和红色或红色和绿色)。 我有一个单独的模板工作簿,其中有 5 个模板表,每个模板对应于颜色:标记为红色、蓝色、绿色、蓝色和红色或红色和绿色。
我想要一个将通过我的“主”工作簿的 B 列的宏,并根据颜色,从模板工作簿中复制相应的模板,然后单击相邻列中的链接返回主工作簿A,它将把它带到一个空的工作表并粘贴模板。这应该重复以遍历整个列。
例如:
- 识别“主”工作簿中的单元格 B2 具有红色。
- 打开模板工作簿,
- 转到标记为红色的工作表
- 复制整张纸
- 返回“主”工作簿
- 单击 B2 旁边的单元格 (A2) 中的超链接名称
- 这会将您带到一张空白纸
- 粘贴模板
- 返回“主”工作簿并重复该列的其余部分
- 如果再次变成红色,则执行相同操作,如果是其他颜色(如蓝色),则复制粘贴蓝色模板表。
我自己尝试从其他论坛中提供的代码中编写代码,但它仅将粘贴复制到需要红色模板的 10 张工作簿中的前 2 张“主”工作簿上。到目前为止,我只为 1 个颜色标准编写了它,因为如果 1 不起作用,则添加多个标准没有意义:
Sub Summary()
Dim rng As Range
Dim i As Long
Set rng = Range("B:B")
For Each cell In rng
If cell.Value <> "Red" Then cell.Offset(0, -1).select
ActiveCell.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Workbooks.Open Filename:= _
"T:\Contracts\Colour Templates.xlsx"
Sheets("Red Template").Select
Cells.Select
Selection.Copy
Windows("Master.xlsx").Activate
ActiveSheet.Range(“A1”).select
ActiveSheet.Paste
Next
End Sub
【问题讨论】:
-
要在此处获得有用的答案,请尝试实际编写代码并发布特定问题。没有人会为您编写完整的代码。您可以在这里或许多其他地方获得有关如何执行每个单独步骤的答案!
-
@Wolfie 感谢您的富有成效的评论,不幸的是,每个步骤的解释都不存在,因此发布了帖子。对于有答案的步骤,没有关于如何链接它们的解释,当我尝试将它们链接在一起时它不起作用。所以我最终得到的代码(使用我 3 天的编码经验)只是打开模板工作簿并粘贴在“主”工作簿的摘要表上。我很确定我拥有的代码将被大量更改甚至完全忽略,所以没有看到发布它的意义,但根据您的要求,我将为您编辑原始帖子。
-
复制工作表:stackoverflow.com/questions/7692274/… 打开工作簿stackoverflow.com/questions/26415179/… 那里有答案...我已经发布了一个基本代码来帮助您学习一些您需要的关键功能