使用组合框复制 sheet
Copy sheet with combo boxes
我有一个作品sheet,当用户点击一个按钮时,它被复制并粘贴到一个新作品sheet中。我成功地复制了作品中的所有内容sheet(形状、按钮等),但包含使用命名范围的下拉列表的组合框除外(使用以下代码创建:http://www.contextures.com/xlDataVal11.html) .
我试着为此录制了一个宏并得到了以下(简化)
ActiveSheet.Shapes.Range(Array("ExampleCombo")).Select
Selection.Copy
ActiveSheet.Paste
由此我了解到组合框被视为一种形状。为了复制所有组合框并将它们放在新 sheet 中的正确位置,因此我尝试了以下操作:
Sub CopyCombos ()
Dim ws_new As Worksheet
Dim ws_old As Worksheet
Dim Special_Shape As Shape
Dim Special_Shape_COPY As Shape
Dim Position_Left As Single
Dim Position_Top As Single
Dim Position_Width As Single
Dim Position_Height As Single
Set ws_old = ActiveSheet
ActiveWorkbook.Worksheets.Add
Set ws_new = ActiveSheet
For Each Special_Shape In ws_old.Shapes
'Copy position
Position_Left = Special_Shape.Left
Position_Top = Special_Shape.Top
Position_Width = Special_Shape.Width
Position_Height = Special_Shape.Height
'Copy
Special_Shape.Copy
'Paste
ws_new.Paste '<=== Here's the problem! But why?
'Rename
Set Special_Shape_COPY = Selection
'Put in right place
Special_Shape_COPY.Left = Position_Left
Special_Shape_COPY.Top = Position_Top
Special_Shape_COPY.Width = Position_Width
Special_Shape_COPY.Height = Position_Height
Next Special_Shape
End Sub
我在新作品sheet中粘贴组合框后直接收到错误信息"Can't enter break mode at this time"。我该如何解决这个问题?
而不是:
Set ws_old = ActiveSheet
ActiveWorkbook.Worksheets.Add
Set ws_new = ActiveSheet
并复制,使用:
ActiveSheet.Copy After:=Sheets(Sheets.Count)
这将生成完整的副本:
- 行
- 细胞
- 对象等
Gary 的学生 复制作品的答案sheet 在同一工作簿中复制作品时效果很好:
ActiveSheet.Copy After:=Sheets(Sheets.Count)
但是,当将 sheet 复制到另一个(新的)工作簿时,由于颜色格式不同,这会导致出现问题。为了解决这个问题,我在添加新工作簿之前使用了以下代码:
Workbooks.Add Template:="Workbook"
我有一个作品sheet,当用户点击一个按钮时,它被复制并粘贴到一个新作品sheet中。我成功地复制了作品中的所有内容sheet(形状、按钮等),但包含使用命名范围的下拉列表的组合框除外(使用以下代码创建:http://www.contextures.com/xlDataVal11.html) .
我试着为此录制了一个宏并得到了以下(简化)
ActiveSheet.Shapes.Range(Array("ExampleCombo")).Select
Selection.Copy
ActiveSheet.Paste
由此我了解到组合框被视为一种形状。为了复制所有组合框并将它们放在新 sheet 中的正确位置,因此我尝试了以下操作:
Sub CopyCombos ()
Dim ws_new As Worksheet
Dim ws_old As Worksheet
Dim Special_Shape As Shape
Dim Special_Shape_COPY As Shape
Dim Position_Left As Single
Dim Position_Top As Single
Dim Position_Width As Single
Dim Position_Height As Single
Set ws_old = ActiveSheet
ActiveWorkbook.Worksheets.Add
Set ws_new = ActiveSheet
For Each Special_Shape In ws_old.Shapes
'Copy position
Position_Left = Special_Shape.Left
Position_Top = Special_Shape.Top
Position_Width = Special_Shape.Width
Position_Height = Special_Shape.Height
'Copy
Special_Shape.Copy
'Paste
ws_new.Paste '<=== Here's the problem! But why?
'Rename
Set Special_Shape_COPY = Selection
'Put in right place
Special_Shape_COPY.Left = Position_Left
Special_Shape_COPY.Top = Position_Top
Special_Shape_COPY.Width = Position_Width
Special_Shape_COPY.Height = Position_Height
Next Special_Shape
End Sub
我在新作品sheet中粘贴组合框后直接收到错误信息"Can't enter break mode at this time"。我该如何解决这个问题?
而不是:
Set ws_old = ActiveSheet
ActiveWorkbook.Worksheets.Add
Set ws_new = ActiveSheet
并复制,使用:
ActiveSheet.Copy After:=Sheets(Sheets.Count)
这将生成完整的副本:
- 行
- 细胞
- 对象等
Gary 的学生 复制作品的答案sheet 在同一工作簿中复制作品时效果很好:
ActiveSheet.Copy After:=Sheets(Sheets.Count)
但是,当将 sheet 复制到另一个(新的)工作簿时,由于颜色格式不同,这会导致出现问题。为了解决这个问题,我在添加新工作簿之前使用了以下代码:
Workbooks.Add Template:="Workbook"