-
我不太明白你的意思,也不知道這個根本不起作用還是執行錯誤。
首先,我沒有使用子程序。 但我認為可能是你的變數傳遞有問題。
除此之外。 1.我認為o是無用的。 也就是說,o 的賦值沒有意義。
2.你沒有指定陣列的寬度,所以你不能執行它(動態陣列也必須指定寬度),一般dim arr() n = a值(當時可以得到的精確值),然後redim arr(1到n)。
3. arr() 以 1 到 開頭,然後 a() 變成 0 到 4,msgbox 是錯誤的。
5. 另外,我認為你 q=q+1 你應該把它放在 end if 之後嗎?
6. 我沒有使用子流程。 我認為在子程序開始時,您應該將子程序放在主程式正確執行之後,然後將其應用於子程序(以便更容易檢查錯誤)。
-
sub macro1()
dim arr, i as long
arr =on error resume next
i = , arr)
if = 0 then
msgbox "元素 2 在陣列中的位置為:" & ielse
msgbox "陣列中不存在元素 2"
end if
end sub
-
沒有必要深入研究為什麼,如果你必須問為什麼,你必須問Microsoft。 arr() 是乙個動態陣列,陣列結構會自動生成,連續範圍區域的值被分配給這個變數,VBA 預設將其視為乙個陣列,一旦賦值,陣列大小和元素值就確定了。
-
沒有動態陣列。
即使您使用像 dim arr()這樣的宣告作為字串,一旦分配了值,陣列大小也是固定的。
如果要更改陣列大小。
使用 redim 命令。
redim arr(10)
preserve redim arr()
新增 preserve 以保持陣列未清空。
-
這與 VB 中的格式相同!
dim d() 作為資料型別。
-
你必須使用動態陣列,如果你不必把它們全部拿出來,使用動態陣列一次讀取一行,讀取足夠多的需要,退出做跳出,如果你必須全部使用它們,那麼拆分就更簡單了。
-
sub test()
dim arr(),h as long, l as longarr = range("a1:c8")
l = 2h = 5
msgbox "工作。
錶號" & h & "好的,部分" & l & "該列的值為:" & arr(h, l), title:="在主程式中。
資訊容量"call cd(arr, h, l)
end sub
sub cd(iarr, ih, il)
ss = iarr(ih, il)
msgbox "工作表的第一部分" & ih & "好的,部分" & il & "該列的值為:" & ss, title:="子程式資訊"
end sub
-
將子例程陣列變數定義為公共變數!!
-
只需乙個變數名稱就可以了。
-
課堂模組的編寫與日常寫作的程式設計思路形成了鮮明的對比,課堂模組的主題是創造,日常練習是運用。
禁止在類模組中使用公共型別的動態陣列作為模組級變數,私有級變數不能被外界直接呼叫,因此失去了陣列的意義。
rem -==巴蜀兄弟 ==- 來自團隊的支援。
public arr as new collection
public function add(byref r as range) as range
set add = r '建立對與引數 r 對應的單元格的引用。
add '將已建立的引用例項新增到 arr 集合中。
end function
然後,標準模組建立乙個例項並返回集合元素的值:
private mm as new unsamesky '建立類模組 unsamesky mm 的例項
private sub xx()
dim i as long
for i = 1 to 10
1) '將單元格 A1 到 A10 新增到 mm 例項的 arr 集合中。
nextend sub
sub yy()
call xx '致電 xx
msgbox '嘗試返回集合的第 3 個元素的內容,即工作表的 a3 單元格!
end sub
附件可用於測試:
-
建議大家先學習一下類模組的介紹。
-
dim,則將 A 宣告為整數變數。
具體來說,你把 a 看作乙個陣列。
dim,a 不指定型別。
絕對可以是乙個人,但是你不能按右鍵a只能按鍵盤a給乙個人,藍貓的好壞可以據此來判斷。 當藍貓飛走時,立即按A點,人不僅可以減速,而且可以傷害一次,這樣藍貓前期抓人的成功率就大大提高。 請注意,它是: >>>More