Excel 2016 VBA - 状态栏未显示完整消息



我最近在我的计算机上安装了Office 365的最新更新(Windows 10 64位(。 从那以后,我注意到Excel 2016中发生了一件奇怪的事情:状态栏没有显示我在其上显示的完整自定义消息。 当文件首次打开时,它显示正常,但是一旦进行更改,它就不会显示整个消息,而是显示"..."最后几个字符应该在哪里。 状态栏上仍然有足够的空间来放置我的消息的其余部分,所以我无法弄清楚为什么会发生这种情况。

我创建了一个新文件,以查看它是否与我正在处理的特定工作簿有关。 它也在新文件上做到了,所以问题似乎与Excel本身有关。 我在网上寻找解决方案,但找不到任何东西。 我什至在其他几个论坛上发布了有关此的内容,但没有收到答案,所以我想我会在这里尝试。 (请参阅我帖子的末尾,以获取指向其他论坛帖子的链接。

以下是我的测试文件中发生的情况的摘要,以及文件本身的链接。

当我第一次打开测试文件时,它会显示状态栏消息。状态栏图片1

我这样做是为了显示的消息会根据单元格 A1 中的值进行更改。打开后,单元格 A1 为空。 然后我在其中输入一个值,状态栏就像它应该的那样更改。状态栏图片2

然后我删除了单元格 A1 中的值,状态栏应该恢复到第一次打开文件时的样子。 然而,事实并非如此。 它不会显示最后两个字符,而是显示"..."状态栏图片3

有谁知道它为什么要这样做? 奇怪的是,它在第一次打开工作簿时会显示消息,但在使用文件后不会显示完全相同的消息。

如果您想自己测试,这里是下载测试文件的链接。 我很想知道它是否在其他版本的 Excel 上不这样做。 也许这是Excel 2016最新更新的新内容?

测试Excel文件

最后,这是我在其他论坛上就同一问题发表的帖子。 在Excel先生论坛上发帖的链接 链接到在VBA快递论坛上发帖

编辑:根据请求,这是我放入测试文件中的代码。

在工作表1模块中:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.StatusBar = MessageToDisplay
End Sub

在此工作簿模块中:

Private Sub Workbook_Open()
Application.StatusBar = MessageToDisplay
End Sub

在模块 1 模块中:

Function MessageToDisplay() As String
Dim ValueCellA1 As String
ValueCellA1 = ThisWorkbook.Sheets("Sheet1").Range("A1").Value
MessageToDisplay = "This is a test to see how long of a message can be displayed on the status bar. I have noticed in Excel 2016 (most current version) that there seems to be a limit.  The value of Cell A1 is: " & ValueCellA1
End Function

在我正在处理的工作簿中,我正在写入状态栏的字符串末尾似乎没有空格,但我仍然收到"..."而不是我消息的最后两个字符。

我逐步浏览了代码,并将带有消息的字符串放入监视窗口。在代码的末尾,我截取了监视窗口的屏幕截图。 这是字符串的末尾。 监视列表图像

然而,这是状态栏上显示的内容。 状态栏图像

在此特定工作簿中,用户通过选中某些框来决定要在状态栏上显示哪些数据。 下面是确定状态栏上实际显示的内容的代码。 在任何情况下,MessageToDisplay 字符串的末尾都不应有空格。

If .Range("Options_StatusBar_ShowTotal1").Value = "YES" Then
MessageToDisplay = "Total1: " & Total1
FirstPartWritten = True
End If
If .Range("Options_StatusBar_ShowTotal2").Value = "YES" Then
If FirstPartWritten = False Then
MessageToDisplay = "Total2: " & Total2
FirstPartWritten = True
Else
MessageToDisplay = MessageToDisplay & "     " & "Total2: " & Total2
End If
End If
If .Range("Options_StatusBar_ShowTotal2Var").Value = "YES" Then
If FirstPartWritten = False Then
MessageToDisplay = "Total2 Var: " & Total2Var
FirstPartWritten = True
Else
MessageToDisplay = MessageToDisplay & ", Var: " & Total2Var
End If
End If
If .Range("Options_StatusBar_ShowTotal3").Value = "YES" Then
If FirstPartWritten = False Then
MessageToDisplay = "Total3: " & Total3
FirstPartWritten = True
Else
MessageToDisplay = MessageToDisplay & "     Total3: " & Total3
End If
End If
If .Range("Options_StatusBar_ShowTotal3Var").Value = "YES" Then
If FirstPartWritten = False Then
MessageToDisplay = "Total3 Var: " & Total3Var
FirstPartWritten = True
Else
MessageToDisplay = MessageToDisplay & ", Var: " & Total3Var
End If
End If

另外,我尝试显示的消息绝对不超过 255 个字符。

我也有类似的问题。只需首先清除状态栏即可解决问题。

Application.StatusBar = "" 
Application.StatusBar = msg

如果文本末尾有空格,似乎上述行为必须起作用。 我能够通过以下方式修复它

Function MessageToDisplay() As String
Dim ValueCellA1 As String
ValueCellA1 = WorksheetFunction.Trim(ThisWorkbook.Sheets("Tabelle2").Range("A1").Value)
If Len(ValueCellA1) = 0 Then
MessageToDisplay = "This is a test to see how long of a message can be displayed on the status bar. I have noticed in Excel 2016 (most current version) that there seems to be a limit.  The value of Cell A1 is:"
Else
MessageToDisplay = "This is a test to see how long of a message can be displayed on the status bar. I have noticed in Excel 2016 (most current version) that there seems to be a limit.  The value of Cell A1 is: " & ValueCellA1
End If
End Function

我还得到了使用Application.StatusBar = "Test "时显示的点。似乎您必须确保要显示的文本末尾没有任何空白。

更新我认为状态栏文本的最大长度为 255

最新更新