2016-06-09 479 views
0

我想修改一个excel插件,它从工作表的每个单元格获取数据,并将其放入可更容易读取和修改信息的文本框中。如何使文本框控件在VBA中可调整大小

由于某些单元格包含大量文本(并且文本框默认只有足够大的一行),因此我试图使文本框可调,以便用户能够查看所有文本细胞。

下面的链接是一个图片,让你确切地知道我的意思是:

http://www.jibberjobber.com/blog/wp-content/chrome_resize_text_boxes.png

请理解我不想形式简单地放大到一个特定的大小,因为这是容易完成,但我宁愿让用户选择最适合文本,大小和字体的大小。

非常感谢您的回答!

+0

如果不固定文本框的边缘并调整放置框的*表格的大小,那么您不能拥有该功能.VBA控件不是Web UI控件。 –

+0

表单可调整大小。你的意思是我只能通过调整整个表单的大小来调整文本框的大小? –

+1

是的。就我所知,无论如何都是通过用户拖放操作实现的。你可以在某个地方有一个+/-按钮来以编程方式增加/减少文本框的高度,但这很快就会不可避免地变成布局噩梦IMO。 –

回答

1

不同的方法。运行时更改文本框设置。在这种情况下

Private Sub TextBox2_Enter() 
    showTextbox2Text 
End Sub 

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    returnOriginalTextbox2Text 
End Sub 

Sub showTextbox2Text() 
    TextBox3.Visible = False 
    TextBox2.MultiLine = True 
    TextBox2.Height = 75 'make some calculation to adapt to your with and text in textbox 
End Sub 

Sub returnOriginalTextbox2Text() 
    TextBox3.Visible = Visible 'original setting 
    TextBox2.MultiLine = False 'original setting 
    TextBox2.Height = 25 'original setting 
End Sub 

之前进入TextBox2中 Before enter TextBox2

进入TextBox2中后...在出口将恢复到原来的 Enter TextBox2

0

您希望用户更好地查看和编辑信息? 你可以制作一个诀窍......这是打开一个新的表格,现在在原始文本框中的信息在一个更大的文本框中。这种形式可以是通用的,可以在所有文本框中使用,并可以通过按钮调用。

OriginalForm EditForm

+0

有趣的想法。但是,我怎样才能使该文本框适合我正在使用的文本? –

0

以下的的问题,即:

... I宁愿让用户选择最适合的文字,量尺寸的大小和字体

你可以把下面的代码在用户窗体代码窗格:

Option Explicit 

Private mouseLeft As Single, mouseTop As Single 

Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) '<~~ change "TextBox1" to whatever the actual name of your textbox 
    If Button = 1 Then 
     mouseLeft = X 
     mouseTop = Y 
    End If 
End Sub 

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) '<~~ change "TextBox1" to whatever the actual name of your textbox 
    If Button = 1 Then 
     With Me.TextBox1 '<~~ change "TextBox1" to whatever the actual name of your textbox 
      .Width = .Width + X - mouseLeft 
      .Height = .Height + Y - mouseTop 
     End With 
     mouseLeft = X 
     mouseTop = Y 
    End If 
End Sub 

和用户可以将文本框边框拖动到所需的大小