在第一个索引中包含字符串的变体数组 - 用双重类型不匹配覆盖它

Vin*_*ara 3 arrays excel vba excel-vba

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

"狗""猫""马"

我想用这些值覆盖这些值

1.01
2.02
3.03
Run Code Online (Sandbox Code Playgroud)

码:

sumHolder = loanSums(x)
If sumHolder = "N/A" Then
    sumHolder = "0"
End If
loanSums(x) = vbNull
loanSums(x) = sumHolder + trimmedRange(i, trimmedRngCols.paymentAmt)
Run Code Online (Sandbox Code Playgroud)

我试图在字符串上分配双倍,我得到一个类型不匹配.有关如何做到这一点的任何想法

小智 6

你做得不对.

一维变体数组:

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
Run Code Online (Sandbox Code Playgroud)

立即窗口的结果:

dog
cat
horse
 1.01 
 2.02 
 3.03 
Run Code Online (Sandbox Code Playgroud)

二维变体数组:

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
Run Code Online (Sandbox Code Playgroud)

立即窗口和工作表的结果:

1:3
1:5
dog - 1.01
cat - 2.02
horse - 3.03
1.01 - dog
2.02 - cat
3.03 - horse
Run Code Online (Sandbox Code Playgroud)

    variant_array_substitution_before    variant_array_substitution_after
                      在处理                                                  之后处理

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