繁体   English   中英

Excel VBA中的不匹配错误

[英]Mismatch Error in Excel VBA

我是Excel Vba的新手,我想知道是否有人可以帮助我弄清楚如何有效地编写此代码。

我试图使用Else-if语句比较值,但是在运行宏时始终收到不匹配错误。 这是我到目前为止的内容:

Dim score1 As Variant, result1 As Variant

 score1 = Range("B24").value
 Sheets("Answers").Range("P1") = VarType(score1)

If VarType(score1) = 0 Then
        result1 = "Error"
        msg1 = " INPUT A VALUE"
    ElseIf score1 > (((Range("I24").value - Range("H24").value) * 0.2) + ((Range("H24").value + Range("I24").value) / 2)) Then
        result1 = score1
        msg1 = " Adjust the Left Flank of fH_Beta"
    ElseIf score1 < (((Range("I24").value - Range("H24").value) * 0.2) - ((Range("H24").value + Range("I24").value) / 2)) Then
        result1 = score1
        msg1 = " Adjust the Left Flank of fH_Beta"
    Else
        result1 = "N/A"
        msg1 = " No action required"
End If

 Sheets("Answers").Range("F11").value = result1

当我将两条Elseif行从> 2.3和<-7.7更改为代码中显示的公式时,开始出现错误。 我需要编写这些公式,因为值(2.3&-7.7)可能会根据应用程序而变化。

顺便说一句,如果单元格为空,则第一行(IF行)应该保存一条错误消息。 我相信错误与我将变量定义为“ Double”类型有关,但是我找不到解决它的方法(我也尝试将varialbes保存为String并将每个.value更改为.Text)。

任何帮助,将不胜感激。 谢谢...

****更新:上面的代码现在是我当前的代码。 该代码中的公式应采用I24和H24中的值(-7.7和2.3),并给出-0.7的较高公差(在其中带有+的行)和-4.7的较低公差(在其中带有-的行) ),并使用这些公差评估用户的输入(B24)。

如果该单元格保留为空白,则代码将运行First IF行并返回msg1值“ INPUT A VALUE”。 如果用户输入的数字超出容忍范围,则代码应给出msg1值“调整fH_Beta的左翼”。 如果这两个条件都不满足,则输入应在公差范围内,并且msg1值应为“无需采取任何措施”。

我的问题是,无论我给B24加上什么值(甚至是公差值),我都会得到msg1值“调整fH_Beta的左翼”,但我不知道为什么。 如果需要进一步清理,请告诉我。

谢谢

由于scoredouble (即数字),因此将它与空白字符串进行比较是没有意义的。

If score1 = ""没有意义。 它会给你一个类型不匹配的错误。

另一种方法是使用一个variant作为score 除其他类型外,变体可以字符串或数字形式存在。 然后,您可以使用Vartype函数来检查变量中的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM