iT邦幫忙

2

請問一下Excel VBA可以用Class跟List嗎?

  • 分享至 

  • xImage

大概是.Net用久了,
還蠻習慣的,
最近有需求要用Excel VBA,
但是查資料好像沒看到class跟List相關的文章,
所以在Excel VBA裡面沒辦法用class跟List嗎?
麻煩有在使用的大大解答一下,
感恩~
/images/emoticon/emoticon41.gif

froce iT邦大師 1 級 ‧ 2018-09-15 11:15:04 檢舉
https://excelmacromastery.com/vba-class-modules/
list應該是沒有,有array,畢竟算是上古神器了。
小魚 iT邦大師 1 級 ‧ 2018-09-15 11:42:41 檢舉
上古神器都快生鏽了...
要先決定大小算是致命弱點...
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

3
q00153
iT邦新手 3 級 ‧ 2018-09-15 15:12:39
最佳解答
看更多先前的回應...收起先前的回應...
小魚 iT邦大師 1 級 ‧ 2018-09-16 00:35:38 檢舉

你那篇物件類別模組 看起來像是.Net的,
不是Excel VBA的,
Excel VBA的物件類別模組要再研究,
不過我另外找到Type可以用了,

另外Collection跟Dictionary倒是跟.Net蠻像的,
的確是不錯的東西.

q00153 iT邦新手 3 級 ‧ 2018-09-16 00:54:21 檢舉

小魚大~抱歉抱歉
太粗心了,已經更新物件類別模組的網址,
這次應該沒找錯了~/images/emoticon/emoticon16.gif

小魚 iT邦大師 1 級 ‧ 2018-09-16 08:11:01 檢舉

對啊,他怎麼改物件類別模組的名稱的?
為什麼我都找不到地方改?

想不到我那不成熟的BLOG文章會在這裡被引用。

我覺得Dictionary比較好用,因為:

  • Dictionary強制要輸入Key值,Collection則可以忽略Key值。
  • Dictionary可以利用Exists方法檢查Key值是否已經存在
  • Dictionary可以利用Item屬性覆蓋或變更已經存在的Item。
  • Dictionary的Key值可以利用CompareMode屬性設定Case Sensitivity
小魚 iT邦大師 1 級 ‧ 2018-09-16 09:06:45 檢舉

pcw
好的, 感謝~

froce iT邦大師 1 級 ‧ 2018-09-16 11:35:09 檢舉

忘記excel都應該找pcw先問。哈
其實我現在與其寫VBA,我都乾脆盡量丟給python了。

q00153 iT邦新手 3 級 ‧ 2018-09-17 09:16:54 檢舉

小魚大~
在下方的屬性式窗修改
輸入完後按 Enter 就行拉~

https://ithelp.ithome.com.tw/upload/images/20180917/20092441p3f7nScSMf.png

2
paicheng0111
iT邦大師 5 級 ‧ 2018-09-15 22:04:48

array可以不用先決定大小。
我自己都這樣用:

dim ary as variant

if isarray(ary) then
    redim preserve ary(ubound(ary)+1) as variant
else
    redim ary(0) as variant
end if

ary(ubound(ary))="somevalue"
小魚 iT邦大師 1 級 ‧ 2018-09-15 23:56:54 檢舉

這樣好像是可以,
速度也沒有說很慢...
之前看到有一篇說改變大小會比較慢.

我要發表回答

立即登入回答