vba如何將陣列帶入自定義的函式

2021-09-04 02:31:44 字數 5482 閱讀 6752

1樓:華師

窗體放一個label和一個command,**如下:

private sub command1_click()

dim i, a(19), max, min, sum, a1, a2, a3, a4, a5 as integer

label1.caption = ""

randomize

label1.caption = "20名學生成績:" & vbcrlf

for i = 0 to 19

a(i) = int(rnd * 101)

label1.caption = label1.caption & a(i) & iif(i = 19, vbcrlf, ",") & iif(i = 9, vbcrlf, "")

if i = 0 then

max = a(i)

min = a(i)

else

if a(i) < min then min = a(i)

if a(i) > max then max = a(i)

end if

sum = sum + a(i)

select case a(i)

case 0 to 59

a1 = a1 + 1

case 60 to 69

a2 = a2 + 1

case 70 to 79

a3 = a3 + 1

case 80 to 89

a4 = a4 + 1

case 90 to 100

a5 = a5 + 1

end select

next i

label1.caption = label1.caption & "最高分=" & max & vbcrlf

label1.caption = label1.caption & "最低分=" & min & vbcrlf

label1.caption = label1.caption & "平均分=" & format(sum / 20, "0.00") & vbcrlf

label1.caption = label1.caption & "0 - 59分人數:" & a1 & vbcrlf

label1.caption = label1.caption & "60 - 69分人數:" & a2 & vbcrlf

label1.caption = label1.caption & "70 - 79分人數:" & a3 & vbcrlf

label1.caption = label1.caption & "80 - 89分人數:" & a4 & vbcrlf

label1.caption = label1.caption & "90 - 100分人數:" & a5 & vbcrlf

call paixu(a)

label1.caption = label1.caption & "排序後20名學生成績:" & vbcrlf

for i = 0 to 19

label1.caption = label1.caption & a(i) & iif(i = 19, vbcrlf, ",") & iif(i = 9, vbcrlf, "")

next

end sub

private sub form_load()

label1.move 0, 0, me.width

label1.autosize = true

label1.caption = ""

end sub

private sub paixu(b() as variant)

dim i as integer, x as integer

for i = lbound(b) to ubound(b)

for j = lbound(b) to i

if b(j) < b(i) then x = b(i): b(i) = b(j): b(j) = x

next

next

end sub

2樓:匿名使用者

private sub form_load()dim s(), s1()

s = array(2, 3, 4, 5, 6)dim t, l, k

t = 1

l = 2

k = 3

s1 = test(s, t, l, k)for i = 0 to ubound(s1)msgbox s1(i)

next

end sub

function test(s(), t, l, k)dim a

redim a(ubound(s))

for i = 0 to ubound(s)a(i) = s(i) + t + l + k '

next

test = a

end function

3樓:匿名使用者

vb中,陣列本來就是以傳址方式進行傳遞呼叫的。也就是說,你這個引數s,可以是一個陣列,呼叫的時候,以一個陣列呼叫,結果會傳遞返回給呼叫處。

通過excel vba自定義了一個函式,無法把陣列傳入到函式中。

4樓:匿名使用者

只能傳單元格,然後轉陣列。如下

function mytest(rng as range)dim arr() as variant

set arr = rng.value

mytest = ubound(arr)

end function

5樓:匿名使用者

這要用paramarray的。

vba自定義函式,當引數是陣列時,該如何書寫?

6樓:匿名使用者

兩個都可以,第bai二個不能引用 單元格區du域,每個單zhi元格都是一個

dao引數,需要用逗號內分隔

第一個比較接近內容

置函式sum'

option explicit

function ssum(byval range as range) as double

dim rng as range

for each rng in rangessum = ssum + rng.valuenext rng

end function

function ssum0(paramarray arr()) as double

dim i as integer

for i = lbound(arr) to ubound(arr)if isnumeric(arr(i)) thenssum0 = ssum0 + arr(i)end if

next i

end function

7樓:表裡如一

如下:function sum0(byval rng as range) as double

dim t, r

t = 0

for each r in rng

t = t + r.value

next

sum0 = t

end function

vba中如何在宣告自定義函式之前給陣列賦值

8樓:匿名使用者

可以在bai函式中定義靜態型別

dustatic a '只能定義通zhi用型別,否則isempty 檢查不dao出來。

if isempty(a) then '這樣保證回陣列只賦值

答一次redim a(5) as string'對陣列賦值操作

end if

excel vba自定義函式如何進行陣列計算

9樓:匿名使用者

function f(myrange as range)dim myarr(1 to 5)

dim myr as range

dim i as single

i = 1

for each myr in myrangemyarr(i) = myr.value

i = i + 1

next

f = myarr(1) + myarr(2) * myarr(3) + myarr(4) + myarr(5)

end function

10樓:匿名使用者

function f(rng as range) as stringif rng.count <>5 then f="err":exit function

dim a(4) as double,b as integerdim cel as range

for each cel in rng

a(b)=val(cel.value)

b=b+1

next

f = a(0) + a(1)*a(2) + a(3) + a(4)end function

excel vba自定義函式的編寫,自定義陣列

11樓:

最難解決的就是你這種問題,不是提問題,是指揮別人怎麼做,自己說的也不是很明白

告訴你提問題只要把你現在的情況說明白,再說想要什麼結果就行了,有圖最佳。

至於過程不重要,結果才重要。

12樓:匿名使用者

如:一維陣列定義

dim a(99)

vba把這個自定義函式改寫用陣列 含有合併單元格

13樓:司馬刀劍

function 合併(b as range)dim d

set d = createobject("scripting.dictionary")

for each c in b

d(c.value) = ""

next

合併 = join(d.keys, "")set d = nothing

end function

vba自定義函式的返回值能是陣列嗎

14樓:匿名使用者

可以的。要點有兩個:一是在自定義函式中定義一個陣列來存放相關值,如dim a(2),然後對其賦值:

a(1)=5,a(2)=10,並將陣列值賦給函式。第二個要點是如何呼叫。呼叫時,需定義一個變體變數,如 dim c as variant。

假設自定義函式的函式名是 d,則呼叫可寫作

c=d(相應引數)

這時,c(1)=5,c(2)=10

15樓:三少

可以啊,可是隻能輸出第一個陣列元素

16樓:匿名使用者

當然可以的。

比如:dim arr

arr=range("a1:d10")

如何使用Photoshop的自定義形狀工具

1 開啟baips軟體,在左側工具欄中選擇du 自定形狀工具 zhi 2 單擊上方 dao形狀 中的小專三角,滑動滾動條屬選擇需要的形狀。3 單擊選擇要新增的形狀,按住滑鼠左鍵在畫布中拖動出形狀。4 單擊上方 選區 按鈕,在彈出的 建立選區 對話方塊中單擊 確定 按鈕,形狀變成選區。5 在選單欄 編...

openrocket如何自定義發動機的引數

要因 一 不按期保養要因 二 機油變質及機油濾芯不暢不同等級的潤滑油在使用過程中油質都會發生變化。車輛行駛一定里程之後,效能就會惡化,可能會給發動機帶來種種的問題。為了避免這些故障的發生,應該結合使用條件定期給汽車換油,並使油量適中,一般以機油標尺上下限之間為好。機油從機油濾芯的細孔通過時,把油中的...

c中,怎麼把陣列變成自定義函式的形參?還有,給陣列做實參的例子吧。最後,看下我這個,,顯示

你是問如bai何將陣列傳du 遞給函式吧!zhi 除了引用,變數傳遞都涉dao及到資料複製專,也就是在函屬數內要接受實參時,需要一個容器儲存傳入的值,也就是形參的作用,進入函式後為形參在棧上分配記憶體空間,然後將外部變數的值儲存到該空間,便於函式內處理,當函式退出時,釋放該形參 變數 而傳遞陣列時,...