3

我有一个用户表单来显示直接从单元格中获取的条款和条件。激活后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
4

9 回答 9

5

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

TextBox1.AutoSize = True

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

textBox1.Height = textBox1.PreferredHeight

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

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 事件中来回切换自动换行可以解决问题。我没有 2013,所以很遗憾我无法测试它。

您可以在初始化事件中尝试它或尝试像这样的激活事件:

Private Sub UserForm_Activate()
    TandC.WordWrap = False
    TandC.WordWrap = True
End Sub
于 2013-10-30T22:19:01.767 回答
2

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

使用上面的评论,我发现在显示数据之前立即关闭和打开多行属性可以解决这个令人恼火的问题。

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

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

End Sub
于 2013-12-28T19:00:51.807 回答
1

有同样的问题,这解决了它。

Private Sub TextBox1_Change()
    Me.txt_Body.WordWrap = False
    Me.txt_Body.WordWrap = True
End Sub
于 2014-02-03T22:30:43.797 回答
1

自从我今年早些时候升级到 2013 年以来,这一直困扰着我。经过多次尝试并利用这条线索中的内容以及其他调查,我找到了一个可行的解决方案。问题是还需要设置“焦点”。所以对我有用的最终编码是

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

感谢大家。:)

于 2015-11-11T20:08:04.793 回答
1

在过去的几个小时里,我一直在努力解决这个问题,但最终找到了解决方案。但首先,我发现在文本框内单击是触发字体大小放大的原因。为了测试它,我反复单击文本框,然后单击另一个单元格;我这样做了 4 或 5 次,很快意识到这是罪魁祸首。字体大小以标准 MS Office 增量(8、9、10、11、12、14 等)增加。

我还发现,将字体大小重置为应有的大小的唯一方法是调整文本框本身的大小。出于某种原因,这会强制它重新加载在属性菜单中设置的字体大小,而不管 VBA 代码中的内容是什么。一旦我弄清楚了,我所要做的就是编写一些简单的代码,将文本框的高度更改一两个像素,然后下一行代码将高度更改回其原始值。这是我的代码:

Private Sub Textbox1_Change()
Textbox1.Font.Size = 10
Textbox1.Height = 20
Textbox1.Height = 18
End Sub

巴姆。问题解决了。每次文本框的链接单元格中的值发生更改时,都应该运行此代码。希望这对其他人有帮助!

于 2018-03-23T05:20:57.080 回答
0

只是针对面临相同问题的 Word 用户在此处所说的内容的附录。

我遇到了同样的问题,看来财产TextBox.WordWrap是问题所在。

以下是为 Word 用户解决此问题的方法:

  1. 关闭图形界面中文本框的WordWrap属性/
  2. 添加如下内容:

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

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

于 2015-04-14T15:11:04.983 回答
0

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

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

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

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

确保在两个文本框中放置相同的内容并使所有属性相同:enterkeybehavior、multiline、wordwrap

于 2014-04-01T17:08:26.847 回答
0

我有同样的问题。就我而言,上述解决方案均无效。但是,当我更改文本框的顶部位置(例如,前 42 名而不是前 45 名)时,字体正确显示。

于 2018-02-15T22:44:24.843 回答
0

对于从 Google 提出这个问题并想知道如何更改文本框或标签控件的字体大小的任何人,因为似乎只有字体系列是可配置的

...在字体系列名称的右侧有一个小按钮- 单击它。

标签控件的 Font 属性的截屏

否则,您始终可以使用代码:

TextBox1.Font.Size = 18
Label1.Font.Size = 32
于 2018-06-21T18:12:46.767 回答