二十二講 數(shù)組空間有關(guān)問題

1 數(shù)組旳大小

Lbound(數(shù)組)可以獲取數(shù)組的最小下標

Ubound(數(shù)組)可以獲取數(shù)組的最大上標

Ubound(數(shù)組,1)可以獲取數(shù)組的行方面最大上標

Ubound(數(shù)組,2)可以獲取數(shù)組的列方向最大上標

2 動態(tài)數(shù)組的動態(tài)擴充

2.1一維數(shù)組的擴充

如果一個數(shù)組無法或者不方便計算出總的大小,而在一些特殊情況下又不允許有空位,這時我們就需要用動態(tài)的導入方法

Private Sub ComboBox1_GotFocus()

Dim arr(), x, arr1, k

arr1 = Range("a1:a10")

For x = 1 To UBound(arr1)

If arr1(x, 1) > 10 Then

k = k + 1

ReDim Preserve arr(1 To k)

arr(k) = arr1(x, 1)

End If

Next x

ComboBox1.List = arr

End Sub

運行有問題,暫時沒發(fā)現(xiàn)

2.2 二維數(shù)組的擴充

Sub t11()

Dim arr, arr1()

arr = Range("a1:d6")

Dim x, k

For x = 1 To UBound(arr)

If arr(x, 1) = "B" Then

k = k + 1

ReDim Preserve arr1(1 To 4, 1 To k) '應(yīng)該是K行四列,把行當成列,把列當成行。在列的方向擴充。

arr1(1, k) = arr(x, 1)

arr1(2, k) = arr(x, 2)

arr1(3, k) = arr(x, 3)

arr1(4, k) = arr(x, 4)

End If

Next x

Range("a8").Resize(k, 4) = Application.Transpose(arr1) '行列轉(zhuǎn)置

End Sub

這樣擴充的方法比較難以掌握??梢杂靡韵碌姆椒?/p>

Sub d8()

Dim arr, arr1(1 To 1000, 1 To 4)

arr = Range("a1:d6")

Dim x, k

For x = 1 To UBound(arr)

If arr(x, 1) = "B" Then

k = k + 1

arr1(k, 1) = arr(x, 1)

arr1(k, 2) = arr(x, 2)

arr1(k, 3) = arr(x, 3)

arr1(k, 4) = arr(x, 4)

End If

Next x

Range("a15").Resize(k, 4) = arr1

End Sub

3 清空數(shù)組

把原來數(shù)據(jù)清除掉重新裝

erase arr1


Sub d9()

Dim arr, arr1(1 To 1000, 1 To 1)

Dim x, m, k

arr = Range("a1:a16")

For x = 1 To UBound(arr)

If arr(x, 1) <> "" Then

k = k + 1

arr1(k, 1) = arr(x, 1)

Else

m = m + 1

Range("c1").Offset(0, m).Resize(k) = arr1

Erase arr1 '數(shù)組清空,重新裝數(shù)據(jù)

k = 0 'k也需要初始一下,k是計數(shù)器

End If

Next x

End Sub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容