Excel VBA文本框字体大小

我有一个用户表单来显示我的条款和条件,这是从一个单元格直接拾取。 在激活时,我调用TandC.Text = Worksheets("Master").Range("L41") ,当我直接运行表单时 – 正确的字体大小,多行,换行等等。从另一个用户窗体的forms,文本框文本突然显示在一个微小的不可读的字体文本。 即使当我在表单上放置一个testingbutton来将字体大小设置为28时,当表单从另一个表单被踢出时也不起作用。 但是,它在自己运行时会改变它。

Multiline打开时,它似乎是一个问题,我把它关掉,字体是正确的大小,但文本跨越了几英里的权利。 我把它重新打开,我有一个微不可读的字体。

这让我疯狂,任何人都可以提供任何意见吗?

看下面我的代码,踢从forms的forms是一个简单的UF.Show

我真的是非常相似,然后在我初始化我有一些代码,集中在屏幕上的forms,如果你有多个显示器。

 Private Sub CommandButton2_Click() TandC.WordWrap = True TandC.Font.Size = 8 TandC.MultiLine = True End Sub Private Sub UserForm_Initialize() Dim TopOffset As Integer Dim LeftOffset As Integer TopOffset = (Application.UsableHeight / 2) - (Me.Height / 2) LeftOffset = (Application.UsableWidth / 2) - (Me.Width / 2) Me.Top = Application.Top + TopOffset Me.Left = Application.Left + LeftOffset TandC.Text = Worksheets("MasterData").Range("L21") TandC.WordWrap = True TandC.MultiLine = True TandC.Font.Size = 8 End Sub 

尝试打开您的文本框的autosize 。 看起来像多线正试图通过调整字体大小,而不是调整框的大小,将所有文本适合您的文本框。 你也可以尝试设置盒子的高度。

 TextBox1.AutoSize = True 

你也可以试试(来自MSDN ):

 textBox1.Height = textBox1.PreferredHeight 

我试图通过从另一个窗体调用一个窗体来复制您的问题,甚至使用一个button来dynamic更新文本的大小。 我一直无法观察你的问题。 这是我的testing代码:

在userform1后面

 Private Sub CommandButton1_Click() TextBox1.Font.Size = 11 End Sub Private Sub UserForm_Initialize() TextBox1.Text = Range("A1") TextBox1.WordWrap = True TextBox1.MultiLine = True TextBox1.Font.Size = 28 End Sub 

在userform2后面

 Private Sub CommandButton1_Click() UserForm1.Show End Sub 

编辑

我发现这篇文章讨论了在Excel 2013中有相同问题的其他人。有人写道,在getfocus事件中来回切换wordwrap解决了这个问题。 我没有2013年,所以我不能testing它不幸的。

你可以在初始化事件中尝试一下,或者尝试一下这样的激活事件:

 Private Sub UserForm_Activate() TandC.WordWrap = False TandC.WordWrap = True End Sub 

我的程序,在Excel中使用visual basic,计算出数据,然后将其显示在文本框中。 它在Excel 2010中完美工作,但无论TextBox属性部分中的文本大小如何设置,Excel 2013中只显示不可读的像素高的输出。

使用上面的注释,我发现在显示数据之前closures多行属性是解决这个真气问题的方法。

我的数据被收集在一个名为“answer”的stringvariables中,所以我的程序的最后一行如下所示:

 TextBox3.Multiline = False TextBos3.Multiline = True TextBox3.Value = answer End Sub 

有同样的问题,这固定它。

 Private Sub TextBox1_Change() Me.txt_Body.WordWrap = False Me.txt_Body.WordWrap = True End Sub 

自从今年早些时候升级到2013年以来,这一直困扰着我。 经过多次尝试,并利用其他调查中的发现,我发现了一个可行的解决scheme。 问题在于“焦点”也需要设置。 所以对我来说最后的编码是

 TandC.TextBox1.SetFocus TandC.TextBox1.MultiLine = False TandC.TextBox1.MultiLine = True TandC.TextBox1.WordWrap = False TandC.TextBox1.WordWrap = True 

感谢大家。 🙂

我以不同的方式解决了这个问题:

我创build了两个文本框,并填充了相同的内容。 在运行代码时,我观察到两个文本框中的哪一个显示了不可读的字体。 在运行时,我将该文本框的可见性设置为False。

这可能需要一些试验和错误,因为用户窗体上的文本框的位置似乎很重要。

另一种select是创build第二个(相同的)文本框,并在用户窗体之外放置错误字体大小的文本框。

请务必在两个文本框中放入相同的内容,并使所有属性保持一致:enterkeybehavior,multiline,wordwrap

只是这里面向面对同样问题的Word用户所做的补充。

我遇到了同样的问题,似乎属性TextBox.WordWrap是问题。

这里是你如何解决这个Word用户:

  1. closuresgraphics界面中文本框的WordWrap属性/
  2. 添加这样的东西:

     Private Sub TextBox9_Change() TextBox9.WordWrap = True End Sub 

这是一种解决方法,但不一定能解决问题。