陣列:定義陣列:
dim arr(30 to 50) as single 定義陣列,從30到50,定義為浮點型~
arr(30) = 34.3
產生隨機數,但是隨機數要不同(1到20之間產生10個不同的隨機數)
sub→ on error resume next 說明當乙個執行時錯誤發生時,控制項轉到緊接著發生錯誤的語句之後的語句,並在此繼續執行。sdlkfjl()
for i = 1
to10
cells(
1, i) = int(1 + rnd() * 19) '
給個隨機數
for j = 1
to i - 1
dowhile cells(1, j) = cells(1, i) '
判斷這個數與前面的數是否相同,知道不相同退出迴圈
cells(1, i) = int(1 + rnd() * 19) '
若是相同,則重新產生隨機數
loop
next
next
end sub
→ collection物件 可以去除重複值
在collection物件中,由兩部分組成,一部分是值的部分,一部分key的部分,其中key的部分是用來區分重複值的,若是相同的key,則只取第 乙個的值作為collection的值,所以在寫的時候,要是想去掉要素的重複值,可以直接將要素值作為key值,但是key必須為字元型,所以可以用 cstr函式做轉換~
另外由於會有重複的key值,所以要用on error resume next語句來越過錯誤~
private→ 當combobox1發生change的時候,觸發如下事件subuserform_initialize()
dim r as
integer
dim i as
integer
dim mycol as
newcollection
dim arr() as
variant
onerror
resume
next
with
sheet1
r = .cells(.rows.count, 1
).end(xlup).row
for i = 1
tor
iftrim(.cells(i, 1)) <> ""
then
mycol.add item:=cells(i, 1), key:=cstr(.cells(i, 1
))
endif
next
endwith
redim arr(1
to mycol.count) '
最大值已經變了,因為有重複的值會變成不重複的~
for i = 1
tomycol.count
arr(i) =mycol(i)
next
listbox1.list =arr
end sub
private其中subcombobox1_change()
dim myaddress as
string
dim rng as
range
combobox2.clear
with sheet1.range("
a:a"
)
set rng = .find(what:=combobox1.text)
ifnot rng is
nothing
then
myaddress =rng.address
docombobox2.additem rng.offset(,
1)
set rng =.findnext(rng)
loop
while
not rng is
nothing
and rng.address <>myaddress
endif
endwith
combobox2.listindex = 0
set rng = nothing
end sub
rng.address <> myaddress一句很重要,因為findnext函式還會向上找回去,若是沒有這個限制條件,就會一直迴圈下去~
→ vbcrlf和chr(13)都是表示換行的意思
→ 按ctrl+j可以提示方法和屬性
→ 空格+下環線可以將一行分成多行來寫 space+underscore
→ array函式 返回乙個包含陣列的variant
dim a as→ split函式 返回乙個小標從零開始的一維陣列,它包含指定數目的子字串variant
a = array(10,20,30
) b = a(2)
sub參考:splitexample()
dimstr() as
string
str = split("
a,b,c,d,e
", ","
)
for i = 0
toubound(str
) s = s & str(i) &vbcrlf
next
msgbox
s
end sub
單元格簡單複製,將單元格的值存成陣列
private→ split函式&join函式例子,從乙個句子裡面提取姓名和性別subcommandbutton1_click()
arr = sheet2.range("
a1:e83
")
range(
"a1:e83
") =arr
end sub
subsplitexample()
dimstr() as
string
cells(
2, 1) = "全部"
cells(
2, 2) = "姓名"
cells(
2, 3) = "性別"
str = split(cells(1, 1), ","
)
for i = 0
toubound(str
) cells(i + 3, 1) = str
(i)
ifright(str(i), 3) = "
(女)"
then
cells(i + 3, 2) = left(str(i), instr(str(i), "
(") - 1
) cells(i + 3, 3) = "女"
else
cells(i + 3, 2) = str
(i)
cells(i + 3, 3) = "男"
endif
next
msgbox
join(str, ","
)
end sub
join函式是split函式的反向過程~
→ 動態陣列
redim preserve 陣列名(ubound(陣列名) + n)在擴大陣列邊界後,原來的值保留,否則會自動刪掉
→ 陣列複製
可以用「=」直接實現陣列的複製,但是必須保證「=」左邊的陣列是動態陣列
陣列遍歷及其他方法
1 控制台輸出陣列顯式原型物件,然後依次檢視 2 相關常用遍歷方法 1 find 接收乙個方法作為引數,方法內部返回乙個條件,find會遍歷陣列返回匹配元素,否則返回undefined var arraydata 111,222,333,444,555,666,777,888 var findval...
演算法試題 及其他知識點
1.把整數轉換成每一位組成的列表 123 1,2,3 num 1234 print list str num 1,2,3 len 3 i 0 0 1,2,3,4 len 4 i 0 1 1,2,3,4,5 len 5 i 0 2 len n i 0 n 2 1 def reverse list li...
要點及其他
類的載入順序 1.靜態屬性和靜態塊 按書寫順序 2.非靜態屬性和非靜態塊 按書寫順序 3.構造方法 4.被呼叫的方法 無論靜態非靜態 使android應用國際化的步驟 1.新建android xml file 2.選擇type為values 3.選擇語言碼和區域碼,語言碼設定為en或zh 區域碼設定...