【问题标题】:For each next mismatch error对于每个下一个不匹配错误
【发布时间】:2017-10-11 08:08:15
【问题描述】:

我目前正在尝试将一些数据转换为我想要的单位。只有两个单元;密耳和微米。组合框允许用户选择他们希望数据使用的单位。如果数据不是用户想要的单位,则需要进行转换。

我正在尝试对此进行测试:
现在的情况是数据以密耳为单位,我需要将其转换为微米。但是它一直给我 type mismatch 的错误,因为第二个数据在线:rngx.value = rngx.value / y

Dim cx As range
Dim rng As range
Dim cy As range
Dim rngx As range
Const y As Double = 25.4
If unit <> Sheet1.ComboBox1.value Then '------> Data 1 
   If Sheet1.ComboBox1.value = " Mils" Then '---> from mils to microns 
     Set cx = Sheet9.range("E2", Sheet9.range("E2").End(xlDown))
     For Each rng In cx
     rng.value = rng.value * y
     Next rng
   Else
     Set cx = Sheet9.range("E2", Sheet9.range("E2").End(xlDown))'---> Microns to mils 
     For Each rng In cx
     rng.value = rng.value / y
     Next rng
   End If
End If

If unit <> Sheet1.ComboBox2.value Then '-------> Data 2 
   If Sheet1.ComboBox2.value = " Mils" Then'---> from mils to microns 
    Set cy = Sheet9.range("I2", Sheet9.range("I2").End(xlDown))
     For Each rngx In cy
     rngx.value = rngx.value * y
     Next rngx
  Else
    Set cy = Sheet9.range("I2", Sheet9.range("I2").End(xlDown))'---> Microns to mils 
    For Each rngx In cy
     rngx.value = rngx.value / y
     Next rngx
  End If
End If

【问题讨论】:

  • I 列中必须有一些非数字单元格,除法会产生类型不匹配。找不到其他解释。尝试在除法前添加Debug.Print rngx.Address, rngx.value,并在抛出错误时检查即时窗口中显示的最后一行。
  • 现在我知道为什么了,谢谢!!
  • 为什么?请赐教
  • @RachelTanHuiYi 我猜我列中的非数字单元格被揭穿了:)

标签: vba excel


【解决方案1】:

此错误基本上意味着:variableproperty 的类型不正确。

例如,需要整数值的变量不能接受字符串值,除非整个字符串可以被识别为整数。

解决办法:

1) 确保返回的所有值都是数字

2) 确保返回的值都不是空的,因此 ""

这应该可以解决您的问题

【讨论】:

  • 但是第一个有效,为什么第二个无效
  • 我没有在您的代码中看到任何错误。不建议你做的是逐步检查你的代码并告诉我它停在哪一部分。
  • 我现在很困惑,我单步执行代码,它在倒数第二个 End If 时不起作用
  • 同一个变量是什么意思
  • 变化是什么
猜你喜欢
  • 2018-06-20
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多