Dim rangeStr, dataRow, bomRow, levelRow, sNewSheetName, quantRow As String
Dim y, desc, endcap As String
If SheetExists(sNewSheetName) Then
Application.DisplayAlerts = False
ThisWorkbook.Sheets(sNewSheetName).Delete
Application.DisplayAlerts = True
End If
Private Function SheetExists(sheetToFind As String) As Boolean
Dim sSheet As Worksheet
SheetExists = False
For Each sSheet In Worksheets
If sheetToFind = sSheet.Name Then
SheetExists = True
Exit For
End If
Next sSheet
End Function
错误在If语句的第三行上引发。我有解决问题的方法,但是我想了解为什么会起作用。如果我仅将quantumRow变量向下移动到第二个dim语句,则代码是无错误的,因此第一行以sNewSheetName As String结尾。似乎在Dim语句中的sNewSheetName前面添加了一个变量,使此错误出现,并且我很想知道为什么。
您误解了该Dim
声明。
Dim blah, blah2, blah3 As String
仅Blah3
声明为String。前两个是变体。
当您quantRow
向下移动时,则将sNewSheetName
声明为String
并且可以正常工作。然后再移动quantRow
,sNewSheetName
被声明为Variant
,当你检查下标不喜欢它SheetExists()
,因为它期待一个String
不是Variant
。
Private Function SheetExists(sheetToFind As **String**) As Boolean
在Dim
不将其声明为变体的情况下处理多个项目的正确方法是:
Dim blah as String, blah2 as String, blah3 as String
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句