ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ¦Û©w¸q¨ç¼Æ¦p¦ó½á­Èµ¹Àx¦s®æ

¦^´_ 1# dou10801


    ÁÂÁ«e½úµoªí¦¹¥DÃD»P½d¨Ò
«á¾Ç¬ã²ß¦Û­q¨ç¼Æ,´ú¸Õ¤è®×¦p¤U,«e½ú°Ñ¦Ò

Àx¦s®æ¨ç¼Æ³]©w:


VBA:
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-5-23 16:37 ½s¿è

¦^´_ 3# dou10801


    ÁÂÁ«e½ú¦^´_
¦Û­q¨ç¼Æ¦n¹³¥u·|µ¹¦Û¤v­È,«á¾Ç¤]¬Oªì¾Ç,«e½ú½Ð°Ñ¦Ò¥H¤UªºÀ³¥Î,¬Ý¬Ý¾A¤£¾A¦X

¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-5-24 08:23 ½s¿è

¦^´_ 5# quickfixer
¦^´_ 3# dou10801

ÁÂÁ¤G¦ì«e½ú
«á¾ÇÂǦ¹©«¾Ç²ß¨ì«Ü¦hª¾ÃÑ,ÃjÃjÀ´À´¾Ç²ß¤ß±o¦p¤U,½Ð«e½ú¦A«ü¾É




Option Explicit
Function MyCustomFunction(ByVal arg1 As Integer, ByVal arg2 As Integer) As String
'¡ô¦Û­q¨ç¼Æ:MyCustomFunction(«Å§iarg1¬O ªø¾ã¼Æ ,«Å§iarg2¬O ªø¾ã¼Æ)
'¡ô¦]¬°[B2]¥»¨­¦Û­q¨ç¼Æ®æ ¹Lµ{µ¹[A1]­È,¦Ó[B2]³Ì²×­È¬OªÅ¥Õ,©Ò¥H¤£¯à¬OAs Integer
'¥i¥H§R±¼ As IntegerÅܦ¨³q¥Î«¬ÅܼÆ,©Î´««Å§i¬O As String

Evaluate "test1(" & Application.Caller.Offset(-1, -1).Address(0, 0) & "," & arg1 & "," & arg2 & ")"
'¡ô¦^¶ÇEvaluate "~~~" ­È
'arg1Åܼƶǻ¼µ¹ aÅܼÆ
'arg2Åܼƶǻ¼µ¹ bÅܼÆ

MyCustomFunction = ""
'¡ô¥O³o¦Û­q¨ç¼Æµ²ªG¬OªÅ¥Õ
End Function

Function test1(c As Range, a As Integer, b As Integer)
c = a + b
'¡ôa + b­pºâµ²ªG¶Ç»¼µ¹cÅܼÆ(Àx¦s®æ)
End Function

Sub Àx¦s®æ¦ì§}()
MsgBox [A1].Address(0, 0)
MsgBox [A1].Address(1, 0)
MsgBox [A1].Address(0, 1)
MsgBox [A1].Address(1, 1)
End Sub
===============================================
¥H¤U¬O¾Ç²ßºô­¶
https://learn.microsoft.com/zh-t ... pplication.Evaluate
https://learn.microsoft.com/zh-t ... .application.Caller
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-5-24 11:28 ½s¿è

¦^´_ 6# Andy2483


    §ó¥¿:
Function MyCustomFunction(ByVal arg1 As Integer, ByVal arg2 As Integer) As String
'¡ô¦Û­q¨ç¼Æ:MyCustomFunction(«Å§iarg1¬O µu¾ã¼Æ ,«Å§iarg2¬O µu¾ã¼Æ)µ²ªG­È¬O¦r¦ê

% -integer(¾ã¼Æ¸ê®ÆÃþ«¬_-32,768 ¨ì 32,767)
& -long(ªø¾ã¼Æ_-2,147,483,648 ¨ì 2,147,483,647)
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 8# dou10801


    ÁÂÁ«e½ú¦^´_
«á¾Ç±Nµ²ªGÅܤƦp¤U,½Ð°Ñ¦Ò

°õ¦æµ²ªG:



Function test1(c As Range, a As Integer, b As Integer)
c = "'" & a & b
End Function
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-5-24 15:26 ½s¿è

¦^´_ 10# dou10801


    ÁÂÁ«e½ú¦A¦^´_
«á¾Ç¬ã¨s¦p¤U¤è®×,½Ð«e½ú°Ñ¦Ò

°õ¦æµ²ªG:



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
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 10# dou10801


    ½Ð«e½ú°Ñ¦Ò³o©«:
http://forum.twbts.com/viewthrea ... %B9%AA%BA%B0%DD%C3D
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 13# dou10801


    ÁÂÁ«e½úÄ~Äò¤@°_¾Ç²ß
«á¾Ç¬ã²ß«e½úªº»Ý¨D±¡¹Ò,¾Ç²ß¤è®×¦p¤U,½Ð«e½ú°Ñ¦Ò

Option Explicit
Function MyCustomFunction(ByVal arg1 As String, ByVal arg2 As String) As String
Evaluate "test1(¤u§@ªí1!A1,""" & arg1 & """,""" & arg2 & """)"
MyCustomFunction = ""
End Function
Function test1(c As Range, a As String, b As String)
c = a & b
End Function
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 16# ­ã´£³¡ªL


    ÁÂÁ½׾Â,ÁÂÁ«e½ú«ü¾É

«á¾ÇÂǦ¹©«¾Ç²ß«e½úªº¤è®×,¤è®×¾Ç²ß¤ß±o¦p¤U,½Ð«e½ú¦A«ü¾É

°õ¦æµ²ªG:



Option Explicit
Function MyCustomFunction(arg1, arg2, V%) '¦Û­q¨ç¼Æ¥uµ¹µ²ªG­È, ¤£¯à«ü©w¦s©ñ¦ì¸m
'¡ô¦Û­q¨ç¼ÆMyCustomFunction(),(arg1,arg2)«Å§i¬°³q¥Î«¬ÅܼÆ,V¬Oµu¾ã¼Æ
Dim result
'¡ô«Å§iÅܼÆ:result¬O³q¥Î«¬ÅܼÆ
If V = 1 Then result = Val(arg1) + Val(arg2)
'¡ô¦pªGVÅܼƬO 1,´N¥OresultÅܼƬO ¨âÅܼƦUÂର¼Æ­È«á¬Û¥[­È
If V = 2 Then result = arg1 & arg2
'¡ô¦pªGVÅܼƬO 2,´N¥OresultÅܼƬO ¨âÅܼƬ۳s±µ«áªº·s¦r¦ê
MyCustomFunction = result
'¡ô¥OMyCustomFunction¨ç¼Æ¦^¶Ç resultÅܼƭÈ
End Function

Sub TEST() 'µ¹¦Û­q¨ç¼Æ[°Ñ¼Æ],¦A«ü©w¶ñ¤J¦ì¸m, ¶·«ö¶s°õ¦æ
Sheets("¤u§@ªí2").[B2] = MyCustomFunction(100, 200, 1)
'¡ô¥Oªí2.[B2]Àx¦s®æ­È¬O ¥Harg1=100,arg2=200,V=1,
'µ¹MyCustomFunction()¨ç¼Æ¦^¶Ç­È

Sheets("¤u§@ªí2").[B3] = MyCustomFunction("§Úªº¦Û­q", "¨ç¼Æ", 2)
'¡ô¥Oªí2.[B3]Àx¦s®æ­È¬O ¥Harg1="§Úªº¦Û­q",arg2="¨ç¼Æ",V=1,
'µ¹MyCustomFunction()¨ç¼Æ¦^¶Ç­È

End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

        ÀR«ä¦Û¦b : §Ú­Ì­n°µ¦nªÀ·|ªºÀô«O¡A¤]­n°µ¦n¤º¤ßªºÀô«O¡C
ªð¦^¦Cªí ¤W¤@¥DÃD