如何在VBA

时间:2016-06-09 19:45:21

标签: vba excel-vba excel

我正在尝试修改excel的附加组件,该附加组件从工作表的每个单元格中获取数据并将其放入文本框中,以便更容易地读取和修改信息。

由于某些单元格包含大量文本(默认情况下文本框只有一行足够大),我试图使文本框可调,以便用户能够看到所有文本细胞

以下链接是一张图片,因此您确切地知道我的意思:

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

请理解我不希望将表单简单地放大到特定大小,因为这很容易实现,但我更愿意让用户选择最适合的大小文字,大小和字体的数量。

提前感谢您的回答!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您希望用户以更好的方式查看和编辑信息吗? 你可以制作一个技巧......即打开一个新表格,原始文本框中的信息现在位于更大的文本框中。此表单可以是通用的,可以在所有文本框中使用,也可以通过按钮调用。

OriginalForm EditForm

答案 2 :(得分:0)

关注 原始 问题,即:

...我希望允许用户选择最适合文字,大小和字体数量的尺寸

您可以将以下代码放在用户窗体代码窗格中:

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

用户可以将文本框边框拖动到所需的尺寸