[問題] 一個功能 巨集的寫法

作者: hmsboy (一 身 是 å®…)   2021-06-14 23:26:01
(若是和其他不同軟體互動之問題 請記得一併填寫)
軟體:Excel
版本:2019
是這樣的
例如我的巨集寫了一些
pro01 = IIf(InStr(1, ch03, "雞腿飯", 1) <> 0, "PD01", IIf(InStr(1, ch03, "雞翅
飯", 1) <> 0, "PD02", IIf(InStr(1, ch03, "雞排飯", 1) <> 0, "PD03", "PD04")))
但是當雞腿飯下架換成控肉飯
我會打開VBA→取代→目前專案→全部取代
把字串"雞腿飯"換成"控肉飯"
但是其他使用者 需要修改 不希望讓它們打開VBA
所以我想寫成 (不知道寫法對不對)
pro01 = IIf(InStr(1, ch03, "CPD01", 1) <> 0, "PD01", IIf(InStr(1, ch03,
"CPD02", 1) <> 0, "PD02", IIf(InStr(1, ch03, "CPD03", 1) <> 0, "PD03",
"PD04")))
然後指定本活頁簿的工作表1 B2 B3 B4 B5 儲存格 設計讓使用者填寫
這樣的話 要如何把儲存格內容 引導到VBA內作為程式中的字串
Public CPD01 As String
CPD01 = ActiveWorkbook.Sheets("工作表1").Range("B2")
目前我是想應該寫這樣
在任何一個空白處 先寫這樣
但是不知道該如何連結起來
作者: waiter337 (給開司一罐蘇格登)   2021-06-15 01:38:00
首先我建議你用select case 的寫法或者 陣列+迴圈判斷的寫法https://imgur.com/9dom1Xv不可以有引號 引號的意思 就是文字兩種意思是完全不同 比如 蔡英文 跟"蔡英文"兩種意思完全不同 前者只是個抽屜 你要放甚麼都可以後者鐵定就是 辣個人這樣的意思 只是 cpd01=儲存格B2可以練習用f8逐行 跟 新增監看式 來看抽屜放什麼上網查一查在sub 以外的地方 輸入sim cpd01dim cpd01最上面https://imgur.com/EYL7HTv只要是不同的程式 要傳送變數 只有兩種方法一種是上面那樣一種是 呼叫時 要掛號起來帶過去https://imgur.com/xYeBKKyf8 逐行跑看看就會清楚運作流程
作者: newacc (XD)   2021-06-15 14:01:00
看得好混亂,為什麼不直接把ActiveWorkbook.Sheets.Range寫進你的IIf裡?

Links booklink

Contact Us: admin [ a t ] ucptt.com