好吧,我想知道我们是否能够以某种方式创建自定义文本框,作为输入框并链接到VBA。
据我所知,标准程序需要添加一个ActiveX文本框控件,然后使用TextBox1_Change
事件添加代码,以便在用户输入内容时需要发生什么。
可悲的是,默认文本框的外观与电子表格所需的方式不匹配。那么有什么方法可以改变它的外观或者在为同一目的服务的时候替换它?
我能想到并试过的一件事就是插入一个形状(蓝色):
Shape http://im52.gulfup.com/qD2F0B.png
我可以使用VBA获取形状中的文字:
InputText = Shapes("Rounded Rectangle 1").TextFrame.Characters.Text
但我不认为有办法检测形状文本事件的变化吗?
欢迎提出建议/解决方法!
由于
答案 0 :(得分:2)
在ActiveX TextBox上可以更改的内容有一些限制,例如Font / Color / Border / SpecialEffects,但基本的矩形形状无法更改。
但是,您可以通过 BackStyle 属性使TextBox透明,并将其分组到一个形状(向前移动TB)并仍然使用TextBox1_Change
方法进行更改。
如果您需要在其他地方访问TextBox中的值,可以使用TextBox1.LinkedCell
及以下的快速方法将值设置为单元格或命名范围。
Private Sub TextBox1_Change()
' Same Sheet as TextBox1
ActiveSheet.Range(TextBox1.LinkedCell).Value = TextBox1.Value
' Or Below for Named Range
ThisWorkbook.Names(TextBox1.LinkedCell).RefersToRange.Value = TextBox1.Value
End Sub