[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