作者Fmajor (万物静观皆自得)
看板Visual_Basic
标题[VBA ] Function传回值的问题
时间Tue Dec 17 23:38:45 2013
将主程式的值带到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
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.71.66
1F:→ fumizuki:byref... 而且变数都没宣告,预设变数只会存在於所属的 12/17 23:40
2F:→ fumizuki:function 中 12/17 23:40
我刚再主程式加上Dim了,Function中也加上ByRef,
可是还是没办法将Function的那四个变数传回主程式,请问那边有漏掉的吗?
刚尝试写VBA,有些地方还不太了解,还麻烦各位指教,感谢!
※ 编辑: Fmajor 来自: 114.25.71.66 (12/18 00:06)
3F:推 johnpage:copy 中文意思为复制,没有回传的含义。 12/18 06:26
不好意思,我再重新叙述一下问题。
※ 编辑: Fmajor 来自: 114.25.64.101 (12/18 22:56)
4F:推 johnpage:不要养成坏习惯,在function 内不要用全域变数,要用retu 12/18 23:26
5F:→ johnpage:rn回传。 12/18 23:26
6F:→ johnpage:function 与sub 是不同的意思 12/18 23:26
7F:→ johnpage:function 的变数生命期尽量在function结束後也跟着消失 12/18 23:28
8F:→ johnpage:。 12/18 23:28
请问是这样修改吗?
Function那四个值的程式码要怎麽写,才能要如何return到主程式呢?
※ 编辑: Fmajor 来自: 114.25.64.101 (12/19 00:00)
9F:→ cf1064:在function的cc2=XXXXX下加上 return RC1,RC2,CC1,CC2 12/19 10:36
10F:→ cf1064:Call 范围计算("资料表", "AG")改 12/19 10:39
11F:→ cf1064:dim aa as string=范围计算("资料表", "AG") 12/19 10:40
12F:→ cf1064:再将aa的值用","分隔出来给定义的变数 12/19 10:40
13F:嘘 MOONRAKER:VBA的return这样用?你们各位会不会太夸张了? 12/19 10:54
14F:→ MOONRAKER:一次return四个还用","来split?你这那一家的VBA? 12/19 10:55
15F:→ MOONRAKER:乱教一气。 12/19 10:55
16F:→ cf1064:只不过提供一种方式,这麽行就请你教一下,呵呵 12/19 11:11
17F:→ cf1064:你要把他用成阵列再回传也是同样的道理 12/19 11:13