Arrays 第一个索引中包含字符串的变量数组-使用双类型不匹配覆盖该数组

Arrays 第一个索引中包含字符串的变量数组-使用双类型不匹配覆盖该数组,arrays,vba,excel,Arrays,Vba,Excel,我有一个变体数组,如下所示: “狗” “猫” “马” 我想用 1.01 2.02 3.03 代码: 我试图在字符串上分配double,但得到了类型不匹配。任何关于如何做这件事的想法你都做得不对 一维变量数组: Dim a As Long, vals As Variant vals = Array("dog", "cat", "horse") For a = LBound(vals) To UBound(vals) Debug.Print vals(a) vals(a) =

我有一个变体数组,如下所示:

“狗” “猫” “马”

我想用

1.01
2.02
3.03
代码:


我试图在字符串上分配double,但得到了类型不匹配。任何关于如何做这件事的想法你都做得不对

一维变量数组:

Dim a As Long, vals As Variant

vals = Array("dog", "cat", "horse")

For a = LBound(vals) To UBound(vals)
    Debug.Print vals(a)
    vals(a) = CDbl(a + 1 + (a + 1) / 100)
Next a

For a = LBound(vals) To UBound(vals)
    Debug.Print vals(a)
Next a
dim a as long, vals as variant, tmp as variant

vals = range("A2:E4").value2

debug.print lbound(vals, 1) & ":" & ubound(vals, 1)  '1:3, 3 'rows' in array
debug.print lbound(vals, 2) & ":" & ubound(vals, 2)  '1:5, 5 'columns' in array

for a = lbound(vals, 1) to ubound(vals, 1)
    debug.print vals(a, 1) & " - " & vals(a, 3)
    tmp = vals(a, 1)
    vals(a, 1) = vals(a, 3)
    vals(a, 3) = tmp
next a

for a = lbound(vals, 1) to ubound(vals, 1)
    debug.print vals(a, 1) & " - " & vals(a, 3)
next a

range("A2").resize(ubound(vals, 1), ubound(vals, 2)) = vals
即时窗口中的结果:

dog
cat
horse
 1.01 
 2.02 
 3.03 
二维变量数组:

Dim a As Long, vals As Variant

vals = Array("dog", "cat", "horse")

For a = LBound(vals) To UBound(vals)
    Debug.Print vals(a)
    vals(a) = CDbl(a + 1 + (a + 1) / 100)
Next a

For a = LBound(vals) To UBound(vals)
    Debug.Print vals(a)
Next a
dim a as long, vals as variant, tmp as variant

vals = range("A2:E4").value2

debug.print lbound(vals, 1) & ":" & ubound(vals, 1)  '1:3, 3 'rows' in array
debug.print lbound(vals, 2) & ":" & ubound(vals, 2)  '1:5, 5 'columns' in array

for a = lbound(vals, 1) to ubound(vals, 1)
    debug.print vals(a, 1) & " - " & vals(a, 3)
    tmp = vals(a, 1)
    vals(a, 1) = vals(a, 3)
    vals(a, 3) = tmp
next a

for a = lbound(vals, 1) to ubound(vals, 1)
    debug.print vals(a, 1) & " - " & vals(a, 3)
next a

range("A2").resize(ubound(vals, 1), ubound(vals, 2)) = vals
即时窗口和工作表的结果:

1:3
1:5
dog - 1.01
cat - 2.02
horse - 3.03
1.01 - dog
2.02 - cat
3.03 - horse

处理前处理后处理


我已经包括了一些前后图像,以便您可以通过单元格值的左对齐(文本)和右对齐(数字)清楚地看到,将变量编号替换为文本和反之亦然不应该是一个问题。“类型不匹配”必须是值转移以外的内容。

显示代码。如果没有可查看的内容,则很难找到问题。请用字符串填充它们:
“1.01”、“2.02”、“3.03”
,然后在从数组中提取“文本”时将其转换为数字。如果值在变量中,则使用CStr(varName),然后使用Scott说的。谢谢,这正是我要查找的。