Excel VBA文本框字体大小

Ian*_*ugh 2 excel vba

我有一个userform来显示我直接从单元格中获取的条款和条件.在激活TandC.Text = Worksheets("Master").Range("L41")时,我直接运行表单时调用哪个工作正常 - 正确的字体大小,多行,自动换行等.但是,当我从另一个用户窗体运行该表单时,文本框文本突然显示文本在一个微小的不可读字体.即使我在表单上放置一个测试按钮来将字体大小设置为28,当表单从另一个表单中启动时它也不起作用; 但是,当它自己运行时,它确实会改变它.

Multiline打开时似乎是一个问题,我关闭它,字体是正确的大小,但文本跨越数英里的右侧.我把它重新打开,我又有一个很难读的字体.

它让我疯了,任何人都可以就此提出任何建议吗?

请参阅下面的代码,从原始表单中删除表单只是一个简单的问题UF.Show.

我的初始化非常类似于我有一些代码,如果你有多个监视器,将表单集中在屏幕上.

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
Run Code Online (Sandbox Code Playgroud)

Por*_*ner 5

尝试打开autosize文本框.看起来多行试图通过调整字体大小而不是调整框大小来将所有文本放入文本框中.您也可以尝试设置框高度.

TextBox1.AutoSize = True
Run Code Online (Sandbox Code Playgroud)

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

textBox1.Height = textBox1.PreferredHeight
Run Code Online (Sandbox Code Playgroud)

我试图通过从另一个表单调用一个表单来复制您的问题,甚至使用一个按钮来动态更新文本大小.我无法观察到你的问题.这是我的测试代码:

在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
Run Code Online (Sandbox Code Playgroud)

在userform2后面

Private Sub CommandButton1_Click()
  UserForm1.Show
End Sub
Run Code Online (Sandbox Code Playgroud)

编辑

我在Excel 2013中发现了这篇关于其他人有同样问题的帖子.有人写道,在getfocus事件中来回切换wordwrap可以解决问题.我没有2013年,所以我不能测试它.

您可以在initialize事件中尝试它或尝试这样的activate事件:

Private Sub UserForm_Activate()
    TandC.WordWrap = False
    TandC.WordWrap = True
End Sub
Run Code Online (Sandbox Code Playgroud)