vba的一些小陷阱
最近幫朋友寫了個宏,但是因為好久沒有用過vba了(話說我好像上次用vba寫了個小功能還是05年的事情。。),所以基本上可以算是從零開始,邊學邊做,以賽代練了。
因為對語言不熟悉,一個小小的功能居然花了三天。。。不過還好,后面如果再有什么活兒的話應該就相對熟練了~
下面對這個小活兒里面碰到的陷阱做下梳理:
1.最最讓我郁悶的:vba里面的數組定義
Dim arr_data(10) As Variant正常的語言,這里的arr_data都是一個10個要素的數組??墒侨欢?#xff01;vba里面,這個arr_data有!11!個!要!素!
也怪我想當然了。。被這個數組定義坑了好久。。
所以如果你要定義一個10個要素的數組,那么有以下幾種方法:
當然還有其他很多方法,具體可以參照這篇:
VBA數組完全教程
2.子函數的定義
我自己用的子函數定義是這樣的(就是個改變日期格式的小函數):
這里面,函數體里面的serviceDate和函數名serviceDate是相同的,其實就是函數的返回值。
使用的時候要這樣:
3.數組的個數取得(又是數組。。。)
我沒找到直接取得數組元素個數的方法,所以只能通過以下方法計算:
其中,UBound是數組的最大下標,LBound是數組的最小下標(一般是1)。雖然LBound一般就是0,但是還是減一下比較讓人放心,誰沒個萬一呢~
4.Instr的使用
這個純屬我自己粗心。本來想在一個文字列里面查找字符出現的次數,在度娘上隨便搜了下就用了Instr。
可是使用結果總是有問題。
比如在”ABCDEFGABCDEFG”文字列中查找”C”,得到的結果是3,而查找”B”,得到的結果是2。我就迷茫了,為啥B是對的C是錯的捏?
沒頭緒了快2個小時才發現,Instr返回的結果只是找到的第一個字符在文字列中的位置。。。額。。。生命啊。。。就這么被粗心白白的浪費了。。。T.T
錯誤找到了,可我的問題沒解決啊,我想要知道在文字列中字符出現了多少次,怎么辦呢?后來我用了個很笨的辦法:用Split函數把文字列按查找的字符分隔成數組,然后統計數組個數
就醬。。。誰要是有好辦法麻煩留言和我說一聲。。謝謝~~
姑且就這幾個問題吧~以了個上~
總結
- 上一篇: 什么是微处理器?微处理器由几部分组成
- 下一篇: 国内up300.net网盘无法使用的解决