[算表] 共用Function放置位置問題

看板Office作者 (溫柔殺手)時間7年前 (2018/09/10 17:24), 7年前編輯推噓0(0017)
留言17則, 3人參與, 7年前最新討論串1/1
軟體:Excel 版本:2013 各位版上的大大下午好,有一個自訂義Function的位置擺放問題請教。 目前我有兩個Worksheet,如果我有一個自訂義的Function是兩個Worksheet都會用到的。 那麼我應該放在哪裡比較好呢~? 煩請撥冗解惑,感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.116.8 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1536571498.A.285.html

09/10 17:32, 7年前 , 1F
放在模組
09/10 17:32, 1F

09/10 17:45, 7年前 , 2F
但如果指的共同是兩個worksheet於不同的活頁簿來引用的話
09/10 17:45, 2F

09/10 17:47, 7年前 , 3F
則以excel增益集方式掛載後引用
09/10 17:47, 3F

09/10 18:11, 7年前 , 4F
簡單點的把Function前綴放上Public就可以了
09/10 18:11, 4F

09/10 18:15, 7年前 , 5F
然後呼叫方式為Worksheets(__).XXXX
09/10 18:15, 5F

09/10 18:15, 7年前 , 6F
所以要放在哪裡這個問題應該要再反問給你,你打算怎麼管理
09/10 18:15, 6F

09/10 18:16, 7年前 , 7F
你的code?
09/10 18:16, 7F
感謝兩位大大的指導 @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

09/10 20:27, 7年前 , 8F
更新資料
09/10 20:27, 8F

09/10 20:56, 7年前 , 9F
模組sub程序如要回傳值的話,可在sub外設個public 變數來
09/10 20:56, 9F

09/10 20:56, 7年前 , 10F
接收
09/10 20:56, 10F

09/10 20:58, 7年前 , 11F
主程式執行要接function的話,在模組內以function..end
09/10 20:58, 11F

09/10 20:59, 7年前 , 12F
function,其中要將回傳值寫入自訂function名稱內
09/10 20:59, 12F

09/10 21:00, 7年前 , 13F
主程式內就以range = findandsorting來接收
09/10 21:00, 13F

09/10 21:02, 7年前 , 14F
09/10 21:02, 14F

09/10 21:03, 7年前 , 15F
模擬的動作皆為回傳e1:g3儲存格,再以function或sub回傳
09/10 21:03, 15F

09/10 21:05, 7年前 , 16F
其他實際動作或要傳值到function或sub內的話,再自行調整
09/10 21:05, 16F

09/10 23:44, 7年前 , 17F
這也是一個不錯的想法,感謝您的分享。
09/10 23:44, 17F
文章代碼(AID): #1RbZXgA5 (Office)
文章代碼(AID): #1RbZXgA5 (Office)