作者yimean (溫柔殺手)
看板Office
標題[算表] 共用Function放置位置問題
時間Mon Sep 10 17:24:55 2018
軟體:Excel
版本:2013
各位版上的大大下午好,有一個自訂義Function的位置擺放問題請教。
目前我有兩個Worksheet,如果我有一個自訂義的Function是兩個Worksheet都會用到的。
那麼我應該放在哪裡比較好呢~?
煩請撥冗解惑,感謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.116.8
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1536571498.A.285.html
1F:→ soyoso: 放在模組 09/10 17:32
2F:→ soyoso: 但如果指的共同是兩個worksheet於不同的活頁簿來引用的話 09/10 17:45
3F:→ soyoso: 則以excel增益集方式掛載後引用 09/10 17:47
4F:→ newacc: 簡單點的把Function前綴放上Public就可以了 09/10 18:11
5F:→ newacc: 然後呼叫方式為Worksheets(__).XXXX 09/10 18:15
6F:→ newacc: 所以要放在哪裡這個問題應該要再反問給你,你打算怎麼管理 09/10 18:15
7F:→ newacc: 你的code? 09/10 18:16
感謝兩位大大的指導
@Soyoso
這個function會傳回值,如果放在Sub裡面,能夠給不一樣的Sub使用嗎?
假設情境如下
模組內容
public sub test()
Function FindAndSorting()
end sub
以下是主程式呼叫
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
public sub test()
active.range("A1:C3")=FindAndSorting
end sub
@newacc
這確實是一個好問題,因為我現在這個專案比較簡單,大致上的功能是這樣。
我有兩個Workbook 分別是Workbook A跟Workbook B
Workbook A有兩個頁面,一個用於輸入,一個用於查詢。
這兩個頁面跟Workbook B相互作用,可以把Workbook B當成是Database
Workbook A跟B分別各有三個按鈕,儲存、清除、調閱資料等功能。
目前只有清除功能在兩個工作表的作用是一模一樣的。
所以,我都直接在Worksheet上建立按鈕,然後對按鈕案右鍵檢視程式碼。
進行程式碼的編寫。所以我並沒有用Module來管理我的Code。
所以我的workbookA結構是長這樣
workbookA
worksheet1 worksheet2
private sub button1() private sub button1()
[code] [code]
end sub end sub
private sub button2() private sub button2()
[code] [code]
sub test end sub
[code]
end sub
private sub test()
[code]
'此sub沒有傳回值
end sub
private sub button3() private sub button3()
[code] [code]
end sub end sub
仔細一想,這似乎不是一個好的管理方法。我可能會花時間改寫。
如果大大願意指導,是否建議用什麼方法管理比較好。
如果基礎於這樣的情況下,我需要一個Function可以被兩個worksheet各自呼叫。
或著說,被兩個Sheet的Button 2呼叫,而該Funtion有回傳值到一個變數而非儲存格。
以我對sub的了解應該是不會有傳回值的。
所以我才會有此一問。
以上,感謝兩位大大的回應與指導。
※ 編輯: yimean (123.195.98.141), 09/10/2018 20:25:11
8F:→ yimean: 更新資料 09/10 20:27
9F:→ soyoso: 模組sub程序如要回傳值的話,可在sub外設個public 變數來 09/10 20:56
10F:→ soyoso: 接收 09/10 20:56
11F:→ soyoso: 主程式執行要接function的話,在模組內以function..end 09/10 20:58
12F:→ soyoso: function,其中要將回傳值寫入自訂function名稱內 09/10 20:59
13F:→ soyoso: 主程式內就以range = findandsorting來接收 09/10 21:00
15F:→ soyoso: 模擬的動作皆為回傳e1:g3儲存格,再以function或sub回傳 09/10 21:03
16F:→ soyoso: 其他實際動作或要傳值到function或sub內的話,再自行調整 09/10 21:05
17F:→ yimean: 這也是一個不錯的想法,感謝您的分享。 09/10 23:44