[VBA ] Function传回值的问题

楼主: Fmajor (萬物靜觀皆自得)   2013-12-17 23:38:45
将主程式的值带到Function中的MySht、MyBase后,
希望Function计算出来的RC1、RC2、CC1、CC2能让主程式应用。
而我这个写法无法将Function的值让主程式使用,
请问程式码有那边需要修改呢?谢谢!!
程式码如下:
Sub 主程式()
Dim RC1 as Integer, RC2 as Integer, CC1 as Integer, CC2 as Integer
Call 范围计算("资料表", "AG")
Range("A" & RC1 & ":O" & RC2).Copy <-希望用Function的RC1、RC2的值
......
Range("Z" & CC1 & ":AD" & CC2).Copy
......
End Sub
Function 范围计算(ByRef Mysht As String, MyBase As String) as Integer
Dim RC1 as Integer, RC2 as Integer, CC1 as Integer, CC2 as Integer
Sheets(Mysht).Select
RC1 = Range(MyBase & ActiveSheet.Rows.Count).End(xlUp).Row
RC2 = xxxxx
CC1 = xxxxx
CC2 = xxxxx
End Function
作者: fumizuki (蒙面加菲狮)   2013-02-17 23:40:00
byref... 而且变量都没宣告,默认变量只会存在于所属的function 中
作者: johnpage (johnpage)   2013-02-18 06:26:00
copy 中文意思为复制,没有回传的含义。不要养成坏习惯,在function 内不要用全域变量,要用return回传。function 与sub 是不同的意思function 的变量生命期尽量在function结束后也跟着消失。
作者: cf1064 (蚵仔)   2013-02-19 10:36:00
在function的cc2=XXXXX下加上 return RC1,RC2,CC1,CC2Call 范围计算("资料表", "AG")改dim aa as string=范围计算("资料表", "AG")再将aa的值用","分隔出来给定义的变量
作者: MOONRAKER (㊣牛鹤鳗毛人)   2013-02-19 10:54:00
VBA的return这样用?你们各位会不会太夸张了?一次return四个还用","来split?你这那一家的VBA?乱教一气。
作者: cf1064 (蚵仔)   2013-02-19 11:11:00
只不过提供一种方式,这么行就请你教一下,呵呵你要把他用成阵列再回传也是同样的道理

Links booklink

Contact Us: admin [ a t ] ucptt.com