VBA 用類實現陣列擴容

2021-08-21 10:10:00 字數 2002 閱讀 2244

我們知道陣列的長度是固定的,定義了以後不能隨意的增加其長度,但是我們可以用類來實現表面上的擴容(即增加陣列的儲存空間)

1.首先我們新增乙個類模組,取名為」myarr」

並且在裡面新增一些方法(比如擴容,檢視陣列值等)

具體**如下:

option explicit

private arr() as string '陣列 ,用來儲存資料

private ilen as integer '陣列長度

private icount as integer '實際陣列長度

private const per as integer = 4 '每次擴容的個數(可變)

'容量,唯讀屬性

property get length() as integer

length = ilen

end property

'實際資料的個數,唯讀屬性

property get count() as integer

dim i as integer

for i = 1 to ubound(arr)

if len(arr(i)) = 0 then

icount = i - 1

count = icount

exit property

end if

next i

icount = length

count = icount

end property

'新增資料

sub add(item as string)

if count = length then '實際個數達到了容量,應該擴容

call expandarr

end if

arr(count + 1) = item

end sub

'獲取全部資料

function getallvalue() as string()

dim ar() as string, i as integer

redim ar(1 to count) as string

for i = 1 to count

ar(i) = arr(1)

next i

getallvalue = ar

end function

'獲取資料

function getvalue(index as integer) as string

if index > length or index < 1 then

getvalue = "小標越界"

else

getvalue = arr(index)

end if

end function

'擴容(步進式擴容

sub expandarr()

ilen = ilen + per

redim preserve arr(1 to ilen) as string

end sub

private sub class_initialize()

call expandarr

end sub

2.我們來測試一下

option explicit

sub 測試()

dim myar as myarr

set myar = new myarr

debug.print myar.length & "....." & myar.count

myar.add "坦克"

myar.add "克"

myar.add "坦克lo"

myar.add "坦"

myar.add "坦克合夥人和健康"

myar.add "坦克是哦"

debug.print myar.length & "....." & myar.count

end sub

效果如下圖所示

我們可以看出,當陣列的容量不夠時,陣列會自動擴容(表面上增加四個儲存空間)



VBA 字典與陣列實現去重

在實際操作中有太多的資料需要去重僅保留一條記錄,在這裡自己寫了兩個函式,測試ok,需要可以自己稍微改動就可以使用啦。1.兩個資料來源合併,僅取第一次出現的資料,具體 如下,因為注釋比較詳細,在這裡就不過多的說明,需要注意一點的是,我這裡使用的資料,去重列是第二列,所以我將字典轉換成陣列時,是將陣列的...

用VBA實現課件中的智慧型互動

用vba實現課件中的智慧型互動 powerpoint中的vba可以實現很多複雜的互動,但很多老師面對vba程式設計,都會覺得無從下手。所以本期我們為大家安排了乙個關於powerpoint中vba的小專題,以後在課件中實現互動就不會那麼費勁了。vba基礎 說到vba程式設計,就不得不提到控制項工具箱,...

用陣列實現vector

include using namespace std 用陣列實現vector typedef int t class vector delete data data tmp capacity 2 public explicit vector int size 5 sz capacity size ...