VBA不识别”字样;如果;报表条件

VBA不识别”字样;如果;报表条件,vba,excel,Vba,Excel,我试图在Excel VBA中使用“如果”逻辑,但脚本总是为两个区域选择第一个选项,即使语句不正确 代码的要点是,如果“Rate”一词出现在屏幕上的某个位置,则应创建某些输出。如果它在不同的位置找到它,那么应该创建不同的输出。目前,即使第一条语句不正确,第一条“If”语句和拉取该输出也已准备就绪 使用下面的示例,“Rate”一词出现在屏幕上的第行、第列(4,20)处,但该语句正在创建输出,就像在(4,16)处一样,因此从(4,27)而不是(4,31)中提取输出。我已经改变了顺序,它总是使用第一个选

我试图在Excel VBA中使用“如果”逻辑,但脚本总是为两个区域选择第一个选项,即使语句不正确

代码的要点是,如果“Rate”一词出现在屏幕上的某个位置,则应创建某些输出。如果它在不同的位置找到它,那么应该创建不同的输出。目前,即使第一条语句不正确,第一条“If”语句和拉取该输出也已准备就绪

使用下面的示例,“Rate”一词出现在屏幕上的第行、第列(4,20)处,但该语句正在创建输出,就像在(4,16)处一样,因此从(4,27)而不是(4,31)中提取输出。我已经改变了顺序,它总是使用第一个选项,不管它是否是正确的语句

我尽可能地简化了代码。我将这两个变量都设置为字符串,但将RateName更改为Variant,以查看这是否能解决问题,但事实并非如此

Dim RateName As Variant
Dim Curr As String

If Session.FindText("Rate", 4, 16, 4) Then
   RateName = Trim(Session.GetDisplayText(4, 27, 20)) 'R name for Amt Add, Amt Off, Buy/Get
ElseIf Session.FindText("Rate", 4, 20, 4) Then
   RateName = Trim(Session.GetDisplayText(4, 31, 20)) 'R name for Flat Amount, Pct Off
End If

If Session.FindText("Rate", 4, 16, 4) Then
   Curr = Trim(Session.GetDisplayText(4, 58, 3)) 
ElseIf Session.FindText("Rate", 4, 20, 4) Then
   Curr = Trim(Session.GetDisplayText(4, 62, 3)) 
End If

不确定我做错了什么,因为我在其他地方有类似的逻辑,并且它正在工作。

在VBA的情况下,将不同的内容返回到0是不正确的。当你使用一些操作符时,你会得到真实的结果

If Session.FindText("Rate", 4, 16, 4) = "some text/value" Then
If Session.FindText("Rate", 4, 16, 4) <> "some text/value" Then
If Session.FindText("Rate", 4, 16, 4) >= "some text/value" Then
If Session.FindText("Rate", 4, 16, 4) <= "some text/value" Then

谢谢你的评论。不过,我不完全确定我是否理解。既然If语句不正确,既然“Rate”在脚本首先查找它的地方不存在,那么它不就转到elseif吗?输出结果将发生变化,因此我不确定是否可以使用运算符。我尝试使用
If Session.FindText(“Rate”,4,16,4)”,然后
但是我得到了一个不匹配的类型错误。再次感谢。推荐的编辑方式很有效。它解决了这个问题,直到我改变了“Rate”一词出现在(4,20)的情况。然后,输出遇到了与以前相同的问题。
If Session.FindText("Rate", 4, 16, 4) = Empty Then 
   'some code if the logical test is true
else 
   'some code if the logical test is false
end if