作者piliGTcat (狸猫)
看板Visual_Basic
标题[VBA ] Excel cell与自订表单TextBox连结
时间Fri Sep 25 16:37:51 2020
各位大大好,
我现在用自订表单中的TextBox连结到我Excel分页中的储存格
例如:
我要连结TextBox1和储存格C1
我就在TextBox1的ControlSource属性填入C1
TextBox1确实会出现储存格C1的数值,C1值是使用excel公式计算出来的
我碰到的问题是,当我在自订表单的程式码中有去读取TextBox1的资料时
连同储存格C1的公式也会被值所覆盖,但我希望C1的公式不要被改变
已经在TextBox1的Locked属性设定为True,但只是限制使用者不能改TextBox1的值
仍无法解决这个问题
举例说明:
C1公式 "=A1*B1"
储存格如下:
A B C
1 6 6 36
我想要做到的效果是让使用者输入A1, B1资料
在自订表单的TextBox1显示C1的计算结果
现在的现象是:
1. 表单初始时,TextBox1内容 = 36
2. 使用者修改A1为4,TextBox1内容 = 24
3. 使用者修改A1为5,理论上C1 = 30,
但因为步骤2,C1内容被改为24 (公式被覆盖)
导致C1显示24,TextBox1显示24
所以,是否有办法让C1 -> TextBox1 (单方向),而不要TextBox1 -> C1
目前折衷的办法是利用保护工作表的功能,锁定C1
但当自订表单关闭时,会出现错误提示讯息「发生例外状况」
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.199.40 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1601023073.A.BF4.html
※ 编辑: piliGTcat (60.250.199.40 台湾), 09/25/2020 16:40:17
1F:推 napyang: 建议用textbox1.value = worksheet(...).range(“C1”). 09/30 21:54
2F:→ napyang: value,然後写在userform initialize里面 09/30 21:54
3F:→ piliGTcat: 有想过这种方式,但因为我的userform设定为vbModeless 10/05 11:37
4F:→ piliGTcat: 使用者可以去更改C1的值,这样我要如何让textBox1即时 10/05 11:37
5F:→ piliGTcat: 反应呢? 10/05 11:37