如何用vba在excel中自定義函式

時間 2021-09-04 02:31:22

1樓:匿名使用者

我是來學習的,因為我不太清楚什麼是插值 什麼是直線 什麼是線性 ,

我猜測直線插值,就是按比例插值(如果這裡猜測錯了,樓主就不用往下看了,但請指教)

150焓值=(266.36-132.43)/(200-100)*(150-100)+132.43=199.395

自定義公式為:

function forecastii(x, known_y, known_x) as integer

dim xrange

dim xmin

dim xmax

dim yrange

dim ymin

dim ymax

dim i

xrange = known_x

yrange = known_y

for i = 1 to ubound(xrange)

if xmin <> "" then

xmax = xrange(i, 1)

ymax = yrange(i, 1)

exit for

else

end if

if x > xrange(i, 1) then

xmin = xrange(i, 1)

ymin = yrange(i, 1)

else

end if

next

forecastii = (ymax - ymin) / (xmax - xmin) * (x - xmin) + ymin

end function

'(forecasetii 和forecaset的用法一樣

'=forecasetii(150,"焓值表","溫度區間表")

2樓:匿名使用者

subend sub

用function

end function替換之後你做的就是函式了,可以像sum一樣在**裡應用了

excel vba中自定義一個函式,該函式需要用到函式所在的那個單元格的列號,如函式寫在b5單元格

3樓:匿名使用者

下面的函式返回單bai元格地du

自定義函式的單dao元回格的地址

所以可以用答

4樓:匿名使用者

使用 vba 編寫

來函式,如果想要獲取自函式所

在單元格的列號(行號),可以考慮以下辦法:

1、使用引數傳遞

即在編寫函式時,手動將當前單元格傳遞過去。

function myfunction1(rng as range)myfunction = rng.row & "," & rng.column

end function

2、用 activecell 屬性

function myfunction2()myfunction = activecell.row & "," & activecell.column

end function

3、呼叫 thiscell 屬性

5樓:50101333呼機

function my(mypath as string, rownumber as single, columnnumber as single)workbooks.open (mypath)my = workbooks(2).worksheets(1).

cells(rownumber, columnnumber)end function

excel中vba如何在模組中自定義函式,定義好了之後如何在窗體中呼叫?謝謝

6樓:匿名使用者

在模組裡定義:

function aa(a)

aa=a

end function

窗體裡呼叫:

x=aa(1)

msgbox x

7樓:匿名使用者

vb函式分

baisub(無返回值)以及dufunction(有返回值)簡單範例

public function ss() as stringss = "我是

zhi"

end function

注意,想定dao義的函式能夠在窗體或別版的權模組呼叫,該函式必須是public的,也就是第一個關鍵字必須為public

function的呼叫很簡單,直接寫函式名和引數如 msgbox ss

而sub的呼叫直接call,如:

public sub ss()

ss = "我是"

end sub

呼叫call ss

另外一點需要注意,呼叫模組定義的函式,直接寫函式名。但如果呼叫窗體的函式,就得把窗體加上。比如,我要呼叫sheet1下的bb函式,則該寫成 call sheet1.bb

excel vba中,如何使一個自定義函式工作起來?

8樓:匿名使用者

你用function的話,這個是個函式,是個值,當然不能在那兒孤零零的使用。

要這樣用,a=char_a("[n]",3),要賦予某個變數。

而sub就不一樣了,本身只是個子程式,呼叫即可。

call sub(a,b)或者sub a,b

修改後的結果,樓主查收:

sub char_a(q as string, w as single)

if len(q) < 0 or w <= 0 then

msgbox "函式引數錯誤"

exit sub

else

with userform1 '估計樓主是在某個窗體中使用的,姑且定為userform1

i = .textbox1.selstart

n = left(.textbox1.value, .textbox1.selstart)

m = right(.textbox1.value, len(.textbox1.value) - .textbox1.selstart)

.textbox1.value = n & q & m

.textbox1.selstart = i + w

end with

end if

end sub

各個模組使用如下:

private sub label1_click()

call char_a("[n]", 3)

end sub

private sub label2_click()

call char_a("[p##]", 4)

end sub

private sub label3_click()

call char_a("[mp##]", 5)

end sub

執行成功!

9樓:匿名使用者

function有回傳的值 呼叫的時候寫,dim kkk as integerkkk=aaa(4)

sub沒有回傳值,只在方法體內進行**執行。相當於vc中的voidpublic sub kkk(byval zzz as integer)

...end sub

呼叫的時候寫

call kkk(4)

或: kkk(4)

10樓:匿名使用者

你函式放在什麼地方了??

函式放在模組裡的話,最好前面加上public。

因為click**你肯定放在form裡的,如果函式放在模組裡的話沒有public是呼叫不到的。

excel裡引用vba的自定義函式,如何自動重新計算?

11樓:匿名使用者

把這個函式的呼叫寫進worksheet_chage事件中。

12樓:礦藏開採

只是需要觸發重算,是數值的話,用「查詢」「替換」,在函式後面加一個「+0」,就ok,只需要一部分資料重算,那就選中那部分數,用「查詢」「替換」加一個「+0」

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

13樓:匿名使用者

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

14樓:匿名使用者

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將工作表sheet1重新命名,因為要重

20時13分14秒 sub rename mydate format date,409 dd mmm yy 得到美式的日期格式 mymonth split mydate,split此日期格式,找到當前的月份的英語簡寫 myname ucase mymonth 1 ucase mymonth 0 ye...

請問如何用VBA將EXCEL檔案中的資料複製到別EXCEL檔案相同的位置

sheet1的區域a1 c3拷貝到sheet2的區域a1 c3 sheet1.range a1 c3 copy sheet2.range a1 c3 丙雅弘雨凝 sub aaa dim sh1 as worksheet dim sh2 as worksheet set sh1 workbooks 1...

如何用VBA關閉EXCEL的列印預覽

這個問題只能用send key 來解決了 但是 在列印預覽視窗出現了之後,任何 都無法執行,這個問題不知道怎麼破,都不能執行了 只能手動退出了,誒,最簡單的做法就是使用 錄製巨集 功能,再去檢視巨集 具體就好了 這個問題我今天也遇到了 當然了現在已經是2020年了 我的解決辦法就是繞過這個列印預覽對...