根据输入到单元格中的数字复制工作​​表

时间:2014-02-21 03:52:41

标签: excel vba excel-vba button

每次我调试某种类型的电气系统时,我都会填写一份工作簿。

每个工作簿包含6个表格,每次填写和使用(网站信息等)。我根据要求在两次和40次之间手动复制两张纸,并填写每个“电气面板”的具体信息。

它们被复制的次数是我在前导信息“Sheet”上输入的值。

是否有一种简单的方法来创建一个按钮/宏(不打印),它将复制Sheet并以这样的方式命名:

X的面板#

(其中#是当前数字,X是总数)

我的技能遗憾地在于电力,而不是Excel或Visual Basic Sc​​ript!

1 个答案:

答案 0 :(得分:0)

通常情况下会被要求尝试自己先尝试一下,当你遇到困难时我们会提供帮助,因为你是一个闪闪发光的人,可能不会在市场上学习太多的编程,我会帮助你。通常你必须先自己尝试一下。

执行以下操作,它应该让您入门:

  1. 使用Excel打开按Alt + F11(这将打开VBE编辑器)
  2. 选择插入 - >模块
  3. 粘贴下面的代码并在[Square Brackets]的位置进行更改 - 我在下面为每个代码添加了一个示例
  4. 在您要输入的位置旁边插入一个形状;无论你想点击什么形状
  5. 右键单击形状并指定宏。从列表中选择MakeSheets,然后单击确定
  6. 再次右键单击形状,转到尺寸和属性>属性并取消选中“打印对象”
  7. 现在,当您在单元格中输入一个数字并单击它时,应创建工作表。如果它遇到错误,它会给你一条消息,告诉你它是什么,虽然这对你来说可能并不重要。希望无论如何它都能正常工作。

    要粘贴的代码:

    Sub MakeSheets()
    On Error GoTo Err_handle
    
    Dim i As Integer, i2 As Integer
    Dim sh As Worksheet
    
    ' Set the worksheet to copy
    Set sh = Worksheets("[Name of sheet to copy]")
    ' Example: Set sh = Worksheets("Panel 1 of 1")
    
    ' Get the number of sheets to copy
    i = Worksheets("[Name of Sheet Where You Enter the Number]"). _
        Range("[Cell reference]")
    ' Example: i = Worksheets("Panel Summary").Range("C3")
    
    ' Say how you want to name the first sheet
    sh.Name = "Panel 1 of " & i
    
    i2 = ActiveWorkbook.Worksheets.Count
    
    For x = 1 To i - 1
        sh.Copy After:=Sheets(i2 + x - 1)
        ' Say how you want to name subsequent sheets
        Sheets(x + i2).Name = "Panel " & x + 1 & " of " & i
    Next x
    
    
    Err_handle:
    MsgBox "Error Number: " & Err.Number & vbCrLf _
        & "Error Desc: " & Err.Description, vbCritical, "Error!"
    
    End Sub