【发布时间】:2023-02-19 19:42:57
【问题描述】:
我正在尝试根据当前日期命名工作表。我需要一个计数器变量来命名工作表,以便它们是唯一的。
我做了两次尝试:
Sub COPIAR_MODELO()
Application.ScreenUpdating = False
Dim i As Integer, x As Integer
Dim shtname As String
Dim WSDummy As Worksheet
Dim TxtError As String
Dim counter As Long
counter = 0
Name01:
For counter = 1 To 100 Step 0
TxtError = ""
counter = counter + 1
shtname = Format(Now(), "dd mm yyyy") & " - " & counter
On Error Resume Next
Set WSDummy = Sheets(shtname)
If Not (WSDummy Is Nothing) Then TxtError = "Name taken, additional sheet added!"
Next counter
If TxtError <> "" Then MsgBox "" & TxtError: GoTo Name01
Sheets("MODELO - NFS").Copy Before:=Sheets("MODELO - DEMAIS"): ActiveSheet.Name = shtname
Application.ScreenUpdating = True
End Sub
和:
Sub COPIAR_MODELO()
Application.ScreenUpdating = False
Dim i As Integer, x As Integer
Dim shtname As String
Dim WSDummy As Worksheet
Dim TxtError As String
Dim counter As Long
TxtError = ""
shtname = Format(Now(), "dd mm yyyy")
On Error Resume Next
Set WSDummy = Sheets(shtname)
If Not (WSDummy Is Nothing) Then TxtError = "Name taken, additional sheet added!"
If TxtError <> "" Then MsgBox "" & TxtError: GoTo Name01
If TxtError = "" Then GoTo NameOK
Name01:
For counter = 1 To 100 Step 1
counter = counter + 1
shtname = Format(Now(), "dd mm yyyy") & " - " & counter
Next counter
NameOK:
Sheets("MODELO - NFS").Copy Before:=Sheets("MODELO - DEMAIS"): ActiveSheet.Name = shtname
Application.ScreenUpdating = True
End Sub
预期结果:
我会将此代码分配给一个形状,以根据当前日期创建工作表。
我更喜欢结果 2。
【问题讨论】:
-
不确定哪里出错了?什么对你不起作用?
-
你为什么使用
Step 0?!?!?尝试完全删除它。此外,无需在循环中将计数器加一 -
另外:在您尝试调试代码时删除
On Error Resume Next,它会隐藏其中的任何问题 -
删除第一个代码的步骤 0,计数变量变为 100(创建一个带有“- 100”的工作表)
-
在每个单元格中写入/在循环内创建您的工作表(缩进您的代码将有助于此)