Excel 为什么我的删除过程在第二次调用它时不起作用?
我编写了以下代码来插入新工作表、重命名和删除它们。 但是,当我第二次调用delete sub时,它将不起作用,因为NumSheets变为零,即使有两张以上的工作表Excel 为什么我的删除过程在第二次调用它时不起作用?,excel,vba,Excel,Vba,我编写了以下代码来插入新工作表、重命名和删除它们。 但是,当我第二次调用delete sub时,它将不起作用,因为NumSheets变为零,即使有两张以上的工作表 Public NumSheets As Integer Sub NewCCSheet() Dim n As Integer n = InputBox("How many 16-24 Vehicle C.C.sheets do you need? (Enter a number only)") NewVehi
Public NumSheets As Integer
Sub NewCCSheet()
Dim n As Integer
n = InputBox("How many 16-24 Vehicle C.C.sheets do you need? (Enter a number only)")
NewVehicle (n)
End Sub
Function NewVehicle(n As Integer)
For i = 1 To n
NumSheets = NumSheets + 1
Worksheets("16-24 Vehicle C.C.1").Copy Before:=Worksheets("Ave. Vehicle C.C.")
ActiveSheet.Name = "16-24 Vehicle C.C." & CStr(NumSheets + 1)
Range("B5").ClearContents
Range("D4").ClearContents
Range("E12:E13").ClearContents
Range("B15:E23").ClearContents
MsgBox NumSheets
Next i
End Function
Sub DeleteSheets()
MsgBox NumSheets
Dim Ans As String
If NumSheets = 0 Then
MsgBox "You can't delete 16-24 Vehicle C.C.1 Worksheet"
Exit Sub
End If
Ans = MsgBox("Delete current worksheet?", vbYesNo)
If Ans = vbYes Then
NumSheets = NumSheets - 1
On Error Resume Next
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
MsgBox NumSheets
End If
End Sub
有些情况下,您的代码可能会在不删除工作表的情况下从
NumSheets
中减去1——例如,如果工作簿中只剩下1张,我不相信它会删除工作簿中的最后一张工作表。“错误恢复下一步”打开了其他错误的可能性,从而导致NumSheets
与实际张数不匹配
您是否可以使用Sheets().Count
而不是NumSheets
?如果是这样的话,这将为您提供一个最新的、准确的统计在给定时间内的实际张数的方法,并且您不必自己去跟踪张数。因此,您的代码可能如下所示:
Sub NewCCSheet()
Dim n As Integer
n = InputBox("How many 16-24 Vehicle C.C.sheets do you need? (Enter a number only)")
NewVehicle (n)
End Sub
Function NewVehicle(n As Integer)
For i = 1 To n
Worksheets("16-24 Vehicle C.C.1").Copy Before:=Worksheets("Ave. Vehicle C.C.")
ActiveSheet.Name = "16-24 Vehicle C.C." & CStr(Sheets().Count + 1)
Range("B5").ClearContents
Range("D4").ClearContents
Range("E12:E13").ClearContents
Range("B15:E23").ClearContents
Next i
End Function
Sub DeleteSheets()
Dim Ans As String
If Sheets().Count = 0 Then
MsgBox "You can't delete 16-24 Vehicle C.C.1 Worksheet"
Exit Sub
End If
Ans = MsgBox("Delete current worksheet?", vbYesNo)
If Ans = vbYes Then
On Error Resume Next
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End If
End Sub
有些情况下,您的代码可能会在不删除工作表的情况下从
NumSheets
中减去1——例如,如果工作簿中只剩下1张,我不相信它会删除工作簿中的最后一张工作表。“错误恢复下一步”打开了其他错误的可能性,从而导致NumSheets
与实际张数不匹配
您是否可以使用Sheets().Count
而不是NumSheets
?如果是这样的话,这将为您提供一个最新的、准确的统计在给定时间内的实际张数的方法,并且您不必自己去跟踪张数。因此,您的代码可能如下所示:
Sub NewCCSheet()
Dim n As Integer
n = InputBox("How many 16-24 Vehicle C.C.sheets do you need? (Enter a number only)")
NewVehicle (n)
End Sub
Function NewVehicle(n As Integer)
For i = 1 To n
Worksheets("16-24 Vehicle C.C.1").Copy Before:=Worksheets("Ave. Vehicle C.C.")
ActiveSheet.Name = "16-24 Vehicle C.C." & CStr(Sheets().Count + 1)
Range("B5").ClearContents
Range("D4").ClearContents
Range("E12:E13").ClearContents
Range("B15:E23").ClearContents
Next i
End Function
Sub DeleteSheets()
Dim Ans As String
If Sheets().Count = 0 Then
MsgBox "You can't delete 16-24 Vehicle C.C.1 Worksheet"
Exit Sub
End If
Ans = MsgBox("Delete current worksheet?", vbYesNo)
If Ans = vbYes Then
On Error Resume Next
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End If
End Sub
我不知道为什么我的代码在屏幕上以这种方式格式化……很难理解……我不知道为什么我的代码在屏幕上以这种方式格式化……很难理解……我希望有一个特定的变量来跟踪我创建的某些工作表。我可以在下一个声明中删除错误。但是Excel给了我一个自动化错误,我不知道如何修复这个错误。而且,我意识到NumSheets的值在完成模块后变为零。如何在vba中保留变量的值?我希望有一个特定的变量来跟踪我创建的某些图纸。我可以在下一个声明中删除错误。但是Excel给了我一个自动化错误,我不知道如何修复这个错误。而且,我意识到NumSheets的值在完成模块后变为零。如何在vba中保留变量的值??