作者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