[问题] 一个功能 宏的写法

楼主: 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