【问题标题】:If Not Statement not working Properly Within a Loop in Excel VBA如果不是语句在 Excel VBA 的循环中无法正常工作
【发布时间】:2020-08-10 12:57:23
【问题描述】:

我正在尝试在循环中创建和IF NOT 语句。我希望这样做,如果该单元格没有我要查找的值,则将公式插入到同一行的另一列中。现在 If not 语句被忽略,所有单元格都得到公式。

Sub Example()
Dim Sales As Range
Dim cell As Range

lr = ActiveSheet.Cells(Rows.Count, "G").End(xlUp).Row

Set Sales= Workbooks("Sales.xlsm").Sheets("Sales").Range("B2:B" & lr)

 For Each cell In Sales



    If Not cell.Value = "Monday" Or cell.Value = "Tuesday" Then

    cell.Offset(0, 12).FormulaR1C1 = "=RC[-3]*RC[-1]"



    End If

Next

End Sub

【问题讨论】:

  • If cell.Value <> "Monday" And cell.Value <> "Tuesday" Then.
  • If Not (Cell.Value = "Monday") or (Cell.Value = "Tuesday") Then。您的第二个条件似乎缺少Not。但是,最终所有测试都是针对 True 完成的。因此@BigBen 的建议更好。

标签: excel vba loops if-statement


【解决方案1】:

试试最简单的方法:

If (Cell.Value2 <> "Monday") Then

提示:第二个条件不需要 OR,因为它总是满足第一个条件。

换句话说,(Cell.Value2 "Monday") 将使第二个条件过时,因为如果当天不是星期一,它将始终为真。

编辑:

我认为@BigBen 是正确的,你想排除星期一和星期二,所以:

If cell.Value <> "Monday" And cell.Value <> "Tuesday" Then

【讨论】:

    【解决方案2】:

    如果您的目标是确定单个字符串值是否可以是多个字符串值之一,那么我将使用 Instr 方法。

    Dim Days as string
    Days = "Monday,Tuesday"
    If Instr(Days, cell.Value)=0 then
    

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 2016-11-23
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2021-05-30
      相关资源
      最近更新 更多