vba 数组如何重新定义数组大小?

Subshaixuan()Dimarr,brr()Range("F1")="Name"Range("G1")="Price"arr=Range("A2:B6")ReDim... Sub shaixuan()
Dim arr, brr()
Range("F1") = "Name"
Range("G1") = "Price"
arr = Range("A2:B6")
ReDim brr(1 To UBound(arr), 1 To 2)
For i = 1 To UBound(arr)
If arr(i, 2) > 400000 Then
brr(i, 1) = arr(i, 1)
brr(i, 2) = arr(i, 2)
End If
Next i
MsgBox UBound(brr)
Range("F2").Resize(UBound(brr), 2) = brr
End Sub

代码如上,brr数组的结果中有空格,在写入F2的时候不满足大于400000条件的会是空值,
如何能够使F2下面连续写入不为空的数据?

感谢大神帮忙。
展开
 我来答
chinawflqw
推荐于2017-12-16 · TA获得超过170个赞
知道小有建树答主
回答量:477
采纳率:50%
帮助的人:361万
展开全部

将你的代码修改为以下,利用变量j表示要写入brr的行数:

Sub shaixuan()
    Dim arr, brr()
    Range("F1") = "Name"
    Range("G1") = "Price"
    arr = Range("A2:B6")
    ReDim brr(1 To UBound(arr), 1 To 2)
    j = 1
    For i = 1 To UBound(arr)
        If arr(i, 2) > 400000 Then
            brr(j, 1) = arr(i, 1)
            brr(j, 2) = arr(i, 2)
            j = j + 1
        End If
    Next i
    MsgBox UBound(brr)
    Range("F2").Resize(UBound(brr), 2) = brr
End Sub

 其实你这个不用数组也能实现你要的目的,如下:

Sub shaixuan1()
    Range("F1") = "Name"
    Range("G1") = "Price"
    For i = 2 To [b65536].End(3).Row
        If Cells(i, 2) > 400000 Then
            Range(Cells(i, 1), Cells(i, 2)).Copy Range("f" & [f65536].End(3).Row + 1)
        End If
    Next
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式