Excel文本框VBA的定制设计

Excel文本框VBA的定制设计,vba,excel,Vba,Excel,我想知道我们是否可以创建自定义外观的文本框,作为输入框并链接到VBA 据我所知,标准过程需要添加一个ActiveX Textbox控件,然后使用TextBox1\u Change事件添加代码,说明当用户在中输入内容时需要执行哪些操作 遗憾的是,默认文本框的外观与我希望电子表格的外观不匹配。那么,有没有什么方法可以改变它的外观,或者在达到同样的目的的同时让其他东西来代替它呢 我可以想到并尝试的一件事是插入一个形状(蓝色): 我可以通过以下方式使用VBA获取形状中的文本: InputText =

我想知道我们是否可以创建自定义外观的文本框,作为输入框并链接到VBA

据我所知,标准过程需要添加一个ActiveX Textbox控件,然后使用
TextBox1\u Change
事件添加代码,说明当用户在中输入内容时需要执行哪些操作

遗憾的是,默认文本框的外观与我希望电子表格的外观不匹配。那么,有没有什么方法可以改变它的外观,或者在达到同样的目的的同时让其他东西来代替它呢

我可以想到并尝试的一件事是插入一个形状(蓝色):

我可以通过以下方式使用VBA获取形状中的文本:

InputText = Shapes("Rounded Rectangle 1").TextFrame.Characters.Text
但我不认为有一种方法可以检测形状变化的文本事件

欢迎提出建议/解决办法


谢谢

在ActiveX文本框上可以更改的内容有一些限制,例如字体/颜色/边框/特殊效果,但是基本矩形形状不能更改

但是,您可以通过BackStyle属性使文本框透明,并将其分组为一个形状(向前移动TB),并且仍然使用
TextBox1\u Change
方法进行更改

如果您需要在其他地方访问文本框中的值,一种快速的方法是使用
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