如何在VBA if语句中使用And函数和Not函数

如何在VBA if语句中使用And函数和Not函数,vba,if-statement,Vba,If Statement,如果你不能理解这一点,我很抱歉,因为我很难解释我想做什么,但是,基本上,我正在尝试制作一个成本表,当你填写它时,它将根据你标记的内容制作一个列表,如果你不选择一些项目,那么其他项目将进入该位置。有人能告诉我哪里出了问题吗?我想让它看看一个单元格是否大于0,如果另一个单元格不等于BBQ,那么我想让它说BBQ If Range("'Cost Sheet'!D87", "'Cost Sheet'!D88") > 0 And Not Range("B97") = " • BBQ"

如果你不能理解这一点,我很抱歉,因为我很难解释我想做什么,但是,基本上,我正在尝试制作一个成本表,当你填写它时,它将根据你标记的内容制作一个列表,如果你不选择一些项目,那么其他项目将进入该位置。有人能告诉我哪里出了问题吗?我想让它看看一个单元格是否大于0,如果另一个单元格不等于BBQ,那么我想让它说BBQ

If Range("'Cost Sheet'!D87", "'Cost Sheet'!D88") > 0 And Not Range("B97") = "     •     BBQ" Then
    Range("B98") = "     •     BBQ"

我不完全理解你的问题,但我有一些建议可以帮助你或其他人得到完整的答案。另外,如果您能提供一些样本数据,并澄清我们是否正在处理多张工作表,这将有所帮助

首先,我假设这段代码将在一定范围内读取不同的值?如果是这样的话,我会将正在查找的单元格范围转换为单元格。这将使在一定范围内执行任务变得更加容易:

Sheets("Cost Sheet").Cells()
第二,你可能会更好地为这个循环服务。它看起来有点像一个修改过的版本:

Lastrow = Sheets("Cost Sheet").Range("D" & Rows.count).end(xlup).row
For i = 1 to Lastrow
   If Sheets("Cost Sheet").Cells(i,4).value > 0 AND <> Sheets("Cost Sheet").Cells(i,4).value<> "BBQ" Then
      Cells().Value = "BBQ"
   End if
Next i

希望这有帮助,祝你好运。

在VB中,相等is=和不相等is但不存在运算符,并且完全按照它所说的去做,这是结果的否定。在这种情况下,它等于。这只是关于VB/VBA的。谢谢你的回复!不幸的是,我对VBA非常陌生,因为我昨天才开始学习,所以我不太了解循环;不过,我会尝试一下,让你知道它是如何进行的!“如果SheetsCost Sheet.Cellsi,4.value>0和BBQ Then”不起作用,因为您必须指定每个检查的两面:“如果SheetsCost Sheet.Cellsi,4.value>0和SheetsCost Sheet.Cellsi,4.value BBQ Then”“是的,你是100%对的。我甚至在阅读时注意到了错误,然后又重复了一遍。我已经编辑了上面的代码。@LiamRussell别担心,我们都是新的,总是有新的东西需要学习。”。