返回列表 上一主題 發帖

[發問] 自定義函數如何賦值給儲存格

本帖最後由 Andy2483 於 2023-5-24 15:26 編輯

回復 10# dou10801


    謝謝前輩再回復
後學研究如下方案,請前輩參考

執行結果:



Option Explicit
Function MyCustomFunction(ByVal arg1 As String, ByVal arg2 As String) As String
Evaluate "test1(" & Application.Caller.Offset(-1, -1).Address(0, 0) & ",""" & arg1 & """,""" & arg2 & """)"
MyCustomFunction = ""
End Function

Sub test1(c As Range, a As String, b As String)
c = a & b
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 10# dou10801


    請前輩參考這帖:
http://forum.twbts.com/viewthrea ... %B9%AA%BA%B0%DD%C3D
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 dou10801 於 2023-5-25 11:48 編輯

回復 4# Andy2483
回覆 5# quickfixer
延伸學習,是否可將[傳遞參數],傳至[其他工作表],感恩.
杜小平

TOP

回復 13# dou10801


    謝謝前輩繼續一起學習
後學研習前輩的需求情境,學習方案如下,請前輩參考

Option Explicit
Function MyCustomFunction(ByVal arg1 As String, ByVal arg2 As String) As String
Evaluate "test1(工作表1!A1,""" & arg1 & """,""" & arg2 & """)"
MyCustomFunction = ""
End Function
Function test1(c As Range, a As String, b As String)
c = a & b
End Function
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 14# Andy2483
感恩指導,上了一課[參數傳遞],謝謝.
杜小平

TOP

Function MyCustomFunction(arg1, arg2, V%) '自訂函數只給結果值, 不能指定存放位置   
Dim result
If V = 1 Then result = Val(arg1) + Val(arg2)
If V = 2 Then result = arg1 & arg2
MyCustomFunction = result
End Function

Sub TEST() '給自訂函數[參數],再指定填入位置, 須按鈕執行
Sheets("工作表2").[B2] = MyCustomFunction(100, 200, 1)
Sheets("工作表2").[B3] = MyCustomFunction("我的自訂", "函數", 2)
End Sub

TOP

回復 16# 准提部林


    謝謝論壇,謝謝前輩指導

後學藉此帖學習前輩的方案,方案學習心得如下,請前輩再指導

執行結果:



Option Explicit
Function MyCustomFunction(arg1, arg2, V%) '自訂函數只給結果值, 不能指定存放位置
'↑自訂函數MyCustomFunction(),(arg1,arg2)宣告為通用型變數,V是短整數
Dim result
'↑宣告變數:result是通用型變數
If V = 1 Then result = Val(arg1) + Val(arg2)
'↑如果V變數是 1,就令result變數是 兩變數各轉為數值後相加值
If V = 2 Then result = arg1 & arg2
'↑如果V變數是 2,就令result變數是 兩變數相連接後的新字串
MyCustomFunction = result
'↑令MyCustomFunction函數回傳 result變數值
End Function

Sub TEST() '給自訂函數[參數],再指定填入位置, 須按鈕執行
Sheets("工作表2").[B2] = MyCustomFunction(100, 200, 1)
'↑令表2.[B2]儲存格值是 以arg1=100,arg2=200,V=1,
'給MyCustomFunction()函數回傳值

Sheets("工作表2").[B3] = MyCustomFunction("我的自訂", "函數", 2)
'↑令表2.[B3]儲存格值是 以arg1="我的自訂",arg2="函數",V=1,
'給MyCustomFunction()函數回傳值

End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 16# 准提部林
感恩,多一種學習方式.
杜小平

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題