【问题标题】:Type mismatch error when referring to array element by location vba按位置 vba 引用数组元素时出现类型不匹配错误
【发布时间】:2023-02-11 01:37:36
【问题描述】:

我是 VBA 新手,我觉得我在这里缺少一些基本的东西。我有一个数组,我正在尝试访问 loc1 + 4th 索引处的元素。我不断收到类型不匹配错误。有人可以帮帮我吗?提前致谢!

Dim atype As Variant
Dim loc1 As Integer

atype = Worksheets("Inputs").Range("B21")

loc1 = InStr(atype, "Loan")
loanpct = atype(loc1 + 4)

我的单元格值为 Bond-61.87% Loan-38.13%,我想提取 38.13% 的部分。通过下面的评论,我了解到它实际上不是一个数组。那么我应该尝试将字符串转换为数组吗?

【问题讨论】:

  • 不幸的是你没有数组。单个单元格的值不是数组。
  • 感谢@ScottCraner,这有效!但是,当我添加 Cdbl 时,我再次遇到类型不匹配错误,但没有 CDBL 也能正常工作。我了解它用于数据转换,我真的需要它吗?
  • 现在是它的字符串
  • 谢谢@ScottCraner

标签: excel vba type-mismatch


【解决方案1】:

我们使用 MID 来解析字符串。该字符串不是一个数组,其中的项目可以像数组一样被引用。

Dim atype As String
Dim loc1 As Integer
Dim loanpct As Double

atype = Worksheets("Inputs").Range("B21")

loc1 = InStr(atype, "Loan")
loanpct = Application.Evaluate(Mid(atype, loc1 + 5))

Debug.Print loanpct

现在 loanpct 是一个数字,可以在以后的代码中使用。

但这假设Loan- 之后的所有内容都可以转换为数字。如果Loan- 之后有任何非数字字符,那么它将失败。

【讨论】:

    猜你喜欢
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多