Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何通过自动打开新工作表将文本框从一张工作表复制和粘贴到另一张工作表_Vba_Excel - Fatal编程技术网

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