使用 VBA 中的变量命名 excel 个工作表

Name excel sheets with variables in VBA

我正在尝试在 VBA 中编写一个程序,最多需要 22 个用户输入 并为每个输入创建并命名一个 sheet。

我有一个 Userform 在初始化时将变量设置为空。我在尝试时遇到问题:

  1. 仅当用户在该变量中输入任何内容并且
  2. 才创建一个新的sheet
  3. 用他们的输入命名 sheet。

这是我目前的情况

Public Part(1 to 22) as String

 Sub Start()

Application.ScreenUpdating = False

For i = 1 To 22
    If Part & i = "" Then

    Else
        Sheets.Add , after:=Worksheets(Worksheets.Count - 2)
        ActiveSheet.Name = Part & i            
    End If

Next i

Application.ScreenUpdating = True

End Sub

这是将值添加到变量的位置。 PartNumber1 - 22 是用户表单上文本框的名称

    Private Sub UserForm_Initialize()

PartNumber1.Value = ""
PartNumber2.Value = ""
PartNumber3.Value = ""
PartNumber4.Value = ""
PartNumber5.Value = ""
PartNumber6.Value = ""
PartNumber7.Value = ""
PartNumber8.Value = ""
PartNumber9.Value = ""
PartNumber10.Value = ""
PartNumber11.Value = ""
PartNumber12.Value = ""
PartNumber13.Value = ""
PartNumber14.Value = ""
PartNumber15.Value = ""
PartNumber16.Value = ""
PartNumber17.Value = ""
PartNumber18.Value = ""
PartNumber19.Value = ""
PartNumber20.Value = ""
PartNumber21.Value = ""
PartNumber22.Value = ""


End Sub

Private Sub PartNumDone_Click()


Part(1) = PartNumber1.Value
Part(2) = PartNumber2.Value
Part(3) = PartNumber3.Value
Part(4) = PartNumber4.Value
Part(5) = PartNumber5.Value
Part(6) = PartNumber6.Value
Part(7) = PartNumber7.Value
Part(8) = PartNumber8.Value
Part(9) = PartNumber9.Value
Part(10) = PartNumber10.Value
Part(11) = PartNumber11.Value
Part(12) = PartNumber12.Value
Part(13) = PartNumber13.Value
Part(14) = PartNumber14.Value
Part(15) = PartNumber15.Value
Part(16) = PartNumber16.Value
Part(17) = PartNumber17.Value
Part(18) = PartNumber18.Value
Part(19) = PartNumber19.Value
Part(20) = PartNumber20.Value
Part(21) = PartNumber21.Value
Part(22) = PartNumber22.Value



End Sub

谢谢!

使用数组。这是一个例子。 PseudoUserform() 首先是 运行:

Public Part(1 To 22) As String

Sub PseudoUserform()
    Part(6) = "James"
    Part(8) = "Ravenswood"
End Sub

Sub Start()
Application.ScreenUpdating = False
For i = 1 To 22
    If Part(i) = "" Then
    Else
        Sheets.Add after:=Worksheets(Worksheets.Count - 2)
        ActiveSheet.Name = Part(i)
    End If
  Next i
Application.ScreenUpdating = True
End Sub