Excel VBA中的OR运算符用法
我正在试图弄清楚如何在VBA中使用Excel VBA中的OR运算符用法,excel,vba,Excel,Vba,我正在试图弄清楚如何在VBA中使用或操作符。我对这种语言不是很熟悉,你也许能说出来 代码的以下部分工作正常: FirstRow = 2 LastRow = Cells(Rows.Count, "K").End(xlUp).Row - 1 For r = LastRow To FirstRow Step -1 If Cells(r, "K") <> 114 Then Rows(r).Delete End If Next r FirstRow=2 LastRow=单元格(Row
或操作符。我对这种语言不是很熟悉,你也许能说出来
代码的以下部分工作正常:
FirstRow = 2
LastRow = Cells(Rows.Count, "K").End(xlUp).Row - 1
For r = LastRow To FirstRow Step -1
If Cells(r, "K") <> 114 Then
Rows(r).Delete
End If
Next r
FirstRow=2
LastRow=单元格(Rows.Count,“K”)。结束(xlUp)。行-1
对于r=LastRow到FirstRow步骤-1
如果单元格(r,“K”)114,则
行(r)。删除
如果结束
下一个r
它删除不包含数字114的行。问题是我想把数字136和139也包括在内。我只想在K列中保留包含114、136或139的行,即(加上标题和汇总行)
我尝试了一些类似的方法:
FirstRow = 2
LastRow = Cells(Rows.Count, "K").End(xlUp).Row - 1
For r = LastRow To FirstRow Step -1
If Cells(r, "K") <> 114 Or _
Cells(r, "K") <> 136 Or _
Cells(r, "K") <> 139 Then
Rows(r).Delete
End If
Next r
FirstRow=2
LastRow=单元格(Rows.Count,“K”)。结束(xlUp)。行-1
对于r=LastRow到FirstRow步骤-1
如果单元格(r,“K”)114或_
单元格(r,“K”)136或_
单元格(r,K)139
行(r)。删除
如果结束
下一个r
这些代码只是删除除标题和汇总行以外的所有内容
我做错了什么
完整代码:
Sub SouthEast()
Dim answer As Integer
answer = MsgBox("Continue?", vbYesNo + vbQuestion, "Show only South East")
If answer = vbYes Then
Dim r As Long
Dim FirstRow As Long
Dim LastRow As Long
FirstRow = 2
LastRow = Cells(Rows.Count, "K").End(xlUp).Row - 1
For r = LastRow To FirstRow Step -1
If Cells(r, "K") <> 114 Or _
Cells(r, "K") <> 136 Or _
Cells(r, "K") <> 139 Then
Rows(r).Delete
End If
Next r
Else
'Do nothing
End If
End Sub
东南偏南()
将答案设置为整数
答案=MsgBox(“是否继续?”,vbYesNo+vbQuestion,“仅显示东南部”)
如果答案=是,则
变暗,变长
第一排一样长
最后一排一样长
第一行=2
LastRow=单元格(Rows.Count,“K”)。结束(xlUp)。行-1
对于r=LastRow到FirstRow步骤-1
如果单元格(r,“K”)114或_
单元格(r,“K”)136或_
单元格(r,K)139
行(r)。删除
如果结束
下一个r
其他的
“什么也不做
如果结束
端接头
这是一个典型的逻辑错误:你说的是:
Not(
(value == 114) OR
(value == 136) OR
(value == 139))
这等于:
Not(value == 114) AND
Not(value == 136) AND
Not(value == 139)
(value <> 114) AND
(value <> 136) AND
(value <> 139)
这等于:
Not(value == 114) AND
Not(value == 136) AND
Not(value == 139)
(value <> 114) AND
(value <> 136) AND
(value <> 139)
(值114)和
(价值136)及
(价值139)
这是一个典型的逻辑错误:你说的是:
Not(
(value == 114) OR
(value == 136) OR
(value == 139))
这等于:
Not(value == 114) AND
Not(value == 136) AND
Not(value == 139)
(value <> 114) AND
(value <> 136) AND
(value <> 139)
这等于:
Not(value == 114) AND
Not(value == 136) AND
Not(value == 139)
(value <> 114) AND
(value <> 136) AND
(value <> 139)
(值114)和
(价值136)及
(价值139)
使用和
或
调用TRUE
,如果其中任何值为TRUE
Sub SouthEast()
Dim answer As Integer
answer = MsgBox("Continue?", vbYesNo + vbQuestion, "Show only South East")
If answer = vbYes Then
Dim r As Long
Dim FirstRow As Long
Dim LastRow As Long
FirstRow = 2
LastRow = Cells(Rows.Count, "K").End(xlUp).Row - 1
For r = LastRow To FirstRow Step -1
If Cells(r, "K") <> 114 And _
Cells(r, "K") <> 136 And _
Cells(r, "K") <> 139 Then
Rows(r).Delete
End If
Next r
Else
'Do nothing
End If
End Sub
和
调用TRUE
如果所有值都为TRUE
Sub SouthEast()
Dim answer As Integer
answer = MsgBox("Continue?", vbYesNo + vbQuestion, "Show only South East")
If answer = vbYes Then
Dim r As Long
Dim FirstRow As Long
Dim LastRow As Long
FirstRow = 2
LastRow = Cells(Rows.Count, "K").End(xlUp).Row - 1
For r = LastRow To FirstRow Step -1
If Cells(r, "K") <> 114 And _
Cells(r, "K") <> 136 And _
Cells(r, "K") <> 139 Then
Rows(r).Delete
End If
Next r
Else
'Do nothing
End If
End Sub
东南偏南()
将答案设置为整数
答案=MsgBox(“是否继续?”,vbYesNo+vbQuestion,“仅显示东南部”)
如果答案=是,则
变暗,变长
第一排一样长
最后一排一样长
第一行=2
LastRow=单元格(Rows.Count,“K”)。结束(xlUp)。行-1
对于r=LastRow到FirstRow步骤-1
如果单元格(r,“K”)114和_
单元格(r,“K”)136和_
单元格(r,K)139
行(r)。删除
如果结束
下一个r
其他的
“什么也不做
如果结束
端接头
使用和
或
调用TRUE
,如果其中任何值为TRUE
Sub SouthEast()
Dim answer As Integer
answer = MsgBox("Continue?", vbYesNo + vbQuestion, "Show only South East")
If answer = vbYes Then
Dim r As Long
Dim FirstRow As Long
Dim LastRow As Long
FirstRow = 2
LastRow = Cells(Rows.Count, "K").End(xlUp).Row - 1
For r = LastRow To FirstRow Step -1
If Cells(r, "K") <> 114 And _
Cells(r, "K") <> 136 And _
Cells(r, "K") <> 139 Then
Rows(r).Delete
End If
Next r
Else
'Do nothing
End If
End Sub
和
调用TRUE
如果所有值都为TRUE
Sub SouthEast()
Dim answer As Integer
answer = MsgBox("Continue?", vbYesNo + vbQuestion, "Show only South East")
If answer = vbYes Then
Dim r As Long
Dim FirstRow As Long
Dim LastRow As Long
FirstRow = 2
LastRow = Cells(Rows.Count, "K").End(xlUp).Row - 1
For r = LastRow To FirstRow Step -1
If Cells(r, "K") <> 114 And _
Cells(r, "K") <> 136 And _
Cells(r, "K") <> 139 Then
Rows(r).Delete
End If
Next r
Else
'Do nothing
End If
End Sub
东南偏南()
将答案设置为整数
答案=MsgBox(“是否继续?”,vbYesNo+vbQuestion,“仅显示东南部”)
如果答案=是,则
变暗,变长
第一排一样长
最后一排一样长
第一行=2
LastRow=单元格(Rows.Count,“K”)。结束(xlUp)。行-1
对于r=LastRow到FirstRow步骤-1
如果单元格(r,“K”)114和_
单元格(r,“K”)136和_
单元格(r,K)139
行(r)。删除
如果结束
下一个r
其他的
“什么也不做
如果结束
端接头
在这种情况下,您需要像这样使用和
操作符:
If Cells(r, "K") <> 114 And _
Cells(r, "K") <> 136 And _
Cells(r, "K") <> 139 Then
Rows(r).Delete
End If
在这种情况下,您需要使用和操作符,如下所示:
If Cells(r, "K") <> 114 And _
Cells(r, "K") <> 136 And _
Cells(r, "K") <> 139 Then
Rows(r).Delete
End If
我的回答与上述类似,但我想强调一些细节
最好使用optionexplicit来避免声明错误
最好清楚地指出工作表和工作范围
在我看来,最好使用。价值
选项显式
次东南()
将答案设置为整数
调暗r长,第一排长,最后一排长
答案=MsgBox(“是否继续?”,vbYesNo+vbQuestion,“仅显示东南部”)
如果答案=是,则
使用此工作簿。工作表(“表1”)
第一行=2
LastRow=.Cells(.Rows.Count,“K”).End(xlUp).Row-1
对于r=LastRow到FirstRow步骤-1
If.单元格(r,“K”).值114和_
.单元格(r,“K”)。值136和_
.单元格(r,“K”)。则值为139
.行(r).删除
如果结束
下一个r
以
其他的
“什么也不做
如果结束
端接头
我的回答与上述类似,但我想强调一些细节
最好使用optionexplicit来避免声明错误
最好清楚地指出工作表和工作范围
在我看来,最好使用。价值
选项显式
次东南()
将答案设置为整数
调暗r长,第一排长,最后一排长
答案=MsgBox(“是否继续?”,vbYesNo+vbQuestion,“仅显示东南部”)
如果答案=是,则
使用此工作簿。工作表(“表1”)
第一行=2
LastRow=.Cells(.Rows.Count,“K”).End(xlUp).Row-1
对于r=LastRow到FirstRow步骤-1
If.单元格(r,“K”).值114和_
.单元格(r,“K”)。值136和_
.单元格(r,“K”)。则值为139
.行(r).删除
如果结束
下一个r
以
其他的
“什么也不做
如果结束
端接头
您需要使用和
而不是或
,它在任何其他编程语言中都是一样的。非常感谢。请加上这一点作为回答。我想让选民解释他们的情况。这可能是一个初学者的错误,可以说是一个逻辑上的错误,但它是n