Excel 使用For Each循环以编程方式生成形状和添加宏

Excel 使用For Each循环以编程方式生成形状和添加宏,excel,vba,Excel,Vba,好吧,我对这个问题有点不知所措,但我希望答案比从我有限的角度看来要简单得多 我有一个Excel工作簿,我正试图将其设置为启用宏的模板,因此我需要我的所有代码和公式都非常灵活,因为它们需要动态地适应在每个实例中使用的项目 表1将是拼接图表,我在该表上有一个命名范围,参考如下: =拼接图$R$3:IndexPlice_图$R:$R,匹配,拼接图$R:$R,-1 在此范围内命名的图纸数量将根据项目所需的拼接数量而变化 我需要创建一个宏来遍历此列表,为每个列表创建一个形状,并为每个形状指定以下内容: S

好吧,我对这个问题有点不知所措,但我希望答案比从我有限的角度看来要简单得多

我有一个Excel工作簿,我正试图将其设置为启用宏的模板,因此我需要我的所有代码和公式都非常灵活,因为它们需要动态地适应在每个实例中使用的项目

表1将是拼接图表,我在该表上有一个命名范围,参考如下:

=拼接图$R$3:IndexPlice_图$R:$R,匹配,拼接图$R:$R,-1

在此范围内命名的图纸数量将根据项目所需的拼接数量而变化

我需要创建一个宏来遍历此列表,为每个列表创建一个形状,并为每个形状指定以下内容:

Sheets("[Name of Sheet indicated in List]").Select
Range("A3").Select
在这个过程的各个阶段,我或多或少都能应付过去,但我在将循环中迭代的工作表的名称传递到宏工作表时遇到了问题。Select命令

例如,如果有三个拼接,则拼接图页面上的列表将是拼接图01、拼接图02和拼接图03。这将产生三种形状,其中文字分别表示拼接_01、拼接_02和拼接_03。这些形状应运行:

拼接_01:

Sheets("Splice_01").Select
Range("A3").Select
拼接_02:

Sheets("Splice_02").Select
Range("A3").Select
拼接_03:

Sheets("Splice_03").Select
Range("A3").Select
如果有帮助,图纸将始终标有前缀“拼接”和递增的数字。但是,拼接的数量总是不同的

形状的位置一点也不重要,即使它们都叠在一起,因为我还是需要移动它们来模拟网络

对于形状本身的创建,我目前只使用这个小部件:

SpliceGuide.Shapes.AddShape msoShapeRectangle, 50, 50, 100, 200
我希望这是清楚的,请让我知道,如果有什么难以置信的明显,我错过了


谢谢

您可以编辑问题以包含更多代码吗?包含的两行内容不足以给出最一般的建议。是否要为每个形状指定工作表的名称?比如将形状的名称更改为图纸的名称?如果是这样,那么将值从循环传递到图纸名称就是什么意思。你在更改工作表的名称吗?谢谢你的提问。我编辑我的帖子是为了增加一点清晰度,但如果我仍然不够清楚,一定要让我知道。你需要一些方法来动态确定拼接图工作表上有多少拼接,这可能与读取相关范围内的值一样简单。一旦知道了这一点,就可以在每个solice上循环,并将用于创建每个形状的代码加上循环中的文本。您可能需要更改循环的部分,以引用正在循环的当前迭代/拼接。是否希望形状文本是相应工作表中A3的值?如果你不介意的话,一张带示例的图片会很有帮助。