【发布时间】:2014-05-04 10:48:03
【问题描述】:
我正在尝试编写一个简单的 VBA 代码,该代码在工作簿中运行,删除一些完整的工作表,并清除其他工作表的内容。这是我的代码:
Sub CleanSheets()
Dim x As Integer
x = 1
Do Until x = Sheets.Count
If Sheets(x).Name = "MIR - Raw" Or "MRR - Raw" Or "MWR - Raw" Or "PL - Raw" Or "SHP - Raw" Then
'clear them
Sheets(x).ClearContents
ElseIf Sheets(x).Name = "Dashboard" Then
Else
'delete the sheet
Application.DisplayAlerts = False
Sheets(x).Delete
Application.DisplayAlerts = True
x = x - 1
End If
x = x + 1
Loop
End Sub
我在“if sheet(x).name = ...”行中不断收到类型不匹配。我对 Sheets.Names 对象不太熟悉,我怎么把类型搞砸了?
【问题讨论】:
-
试试 If Sheets(x).Name = "MIR - Raw" Or Sheets(x).Name = "MRR - Raw" Or ... etc.
-
行得通!不知道为什么...
-
"MIR - Raw" 或 "MRR - Raw" 无法工作,因为 'Or' 需要可以评估为布尔值的表达式,然后执行逻辑析取。 Or 'Or' 运算符还对两个数值表达式中位置相同的位进行按位比较,并在结果中设置相应的位。但是您使用了字符串,因此类型不匹配。
-
基本上你的代码说:如果 Sheets(x).Name = "MIR - Raw" 或 "MRR - Raw"=true 或 "MWR - Raw"=true 或 "PL - Raw"=true或 "SHP - Raw"=true Then.... ,您无法将字符串与布尔值进行比较