【问题标题】:Mismatch Error in Excel VBAExcel VBA 中的不匹配错误
【发布时间】:2015-06-01 22:04:46
【问题描述】:

我是 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 和

顺便说一句,如果单元格为空,则第一行(IF 行)应该保存错误消息。我认为该错误与我将变量定义为“Double”类型有关,但我找不到修复它的方法(我还尝试将变量保存为字符串并将每个 .value 更改为 .Text)。

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

****更新:上面的代码现在是我拥有的当前代码。此代码中的公式应该采用 I24 和 H24(-7.7 和 2.3)中的值,并给出 -0.7 的上公差(与其中的 + 一致)和 -4.7 的下公差(与其中的 - 一致) ) 并使用这些容差来评估用户的输入 (B24)。

如果单元格留空,代码将运行第一个 IF 行并返回 msg1 值“INPUT A VALUE”。如果用户输入的数字超出公差,则代码应给出 msg1 值“调整 fH_Beta 的左侧”。如果这两个条件都不满足,则输入应在容差范围内,并且 msg1 值应为“无需操作”。

我的问题是,无论我在 B24 中输入什么值(甚至是公差值),我都会得到一个 msg1 值“调整 fH_Beta 的左侧”,我不知道为什么。如果我需要进一步澄清,请告诉我。

谢谢

【问题讨论】:

  • 您不能像在公式中那样在 VBA 中使用范围引用。例如,您需要:Range("I24").Value - Range("H24").Value 而不是 I24 - H24
  • 感谢 Rory,我按照您的说明输入了所有值,并按照 Bathsheba 的说明将变量更改为变体,现在我的代码运行没有错误。
  • 对不起,我没有说完。但是,代码仍然无法正常工作(即我将在 B24 中输入一个介于 2.3 和 -7.7 之间的数字(这应该默认为代码的 Else 行),但我的输出仍然返回 msg1 语句在 Elseif 行下找到。
  • 请更新问题以反映修改后的代码,以及当前发生的不应该发生的事情以及应该发生的事情。 (举例说明有问题的值可能会有所帮助)
  • 好的,Rory,我已将问题更新为当前状态。如果这不能帮助澄清,请告诉我。

标签: excel vba


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您回复芭丝谢巴。我现在正在研究一种将 Vartype 合并到我的代码中的方法。
猜你喜欢
  • 2014-01-05
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多