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