Vba 如何通过自动打开新工作表将文本框从一张工作表复制和粘贴到另一张工作表
我想复制和粘贴一些文本框从一张纸到一个新的。下面列出的宏在新工作簿中运行良好:Vba 如何通过自动打开新工作表将文本框从一张工作表复制和粘贴到另一张工作表,vba,excel,Vba,Excel,我想复制和粘贴一些文本框从一张纸到一个新的。下面列出的宏在新工作簿中运行良好: Sub Move_controls() Dim sh As Shape Dim T, L As Integer Sheets("MasterCopy").Select For Each sh In ActiveSheet.Shapes If sh.Type <> msoComment Then T = sh.Top L = sh.Left
Sub Move_controls()
Dim sh As Shape
Dim T, L As Integer
Sheets("MasterCopy").Select
For Each sh In ActiveSheet.Shapes
If sh.Type <> msoComment Then
T = sh.Top
L = sh.Left
For Each Sheet In ActiveWorkbook.Sheets
If Sheet.Name <> "MasterCopy" Then
sh.Copy
Sheet.Select
ActiveSheet.PasteSpecial Link:=False,
DisplayAsIcon:=False
sh.Select
Selection.Top = T
Selection.Left = L
End If
Next
End If
Sheets("MasterCopy").Select
Next
End Sub
你有没有关于如何嵌套这两个代码并复制粘贴母版纸及其所有文本框和功能的建议 在Activesheet上的对象之间循环以及在循环中更改Activesheet可能会导致混淆。我还将修改sh.Select,因为它指的是母版上的当前形状,所以在接下来的两行中设置位置不会发生变化。 因此,您可以考虑以下改进:
Dim T as integer, L As Integer
For Each sh In Sheets("MasterCopy").Shapes
...
' instead of sh.Select +2 lines:
ActiveSheet.Shapes(sh.name).Top = sh.Top
ActiveSheet.Shapes(sh.name).Left = sh.Left
我看不到嵌套的代码,但我也可以假定sh是一个形状或一张纸
尽管如此,我真的不明白为什么在复制整个工作表时需要一个接一个地复制形状…为什么不复制整个工作表,然后删除您不想要的东西?您是指手动还是使用宏?我是指代码,请您给我举个例子?如果您在移动时录制宏并删除您我希望你在最后一句话中说的最后一个选项。那会容易得多。问题在于,专用子工作簿\新闻纸宏会复制新工作表中除文本框以外的所有内容。你知道原因吗?我会检查SheetsMasterCopy中每个sh的。形状会一步一步循环,以查看集合中有哪些形状,例如,将这一行直接放在下面:Debug.print sh.name&,&sh.type。我已经在我的工作表上测试过了:当我插入一个文本框时,它将被插入到形状集合中。很抱歉回复得太晚。谢谢。这样很好用。
Dim T as integer, L As Integer
For Each sh In Sheets("MasterCopy").Shapes
...
' instead of sh.Select +2 lines:
ActiveSheet.Shapes(sh.name).Top = sh.Top
ActiveSheet.Shapes(sh.name).Left = sh.Left