VBA 输入框没有正确显示字符串?
Posted
技术标签:
【中文标题】VBA 输入框没有正确显示字符串?【英文标题】:VBA Inputbox not displaying string correctly? 【发布时间】:2020-03-01 02:58:06 【问题描述】:我正在尝试使用 VBA InputBox 函数显示提示。在 InputBox 的文本中,我包含了一个文件名的字符串变量,但是,当我运行代码时,字符串(称为“tempkey”)没有正确显示——中间的一些字符串丢失了。
在将“tempkey”字符串内容传递到输入框之前,我已经进入调试器并验证了它们。字符串值在 InputBox 中显示不正确。
tempkey = Left(GetFilenameFromPath(files(i)), Len(GetFilenameFromPath(files(i))) - Len("xxxxmap.xlsx"))
If Not dict.Exists(tempkey) Then
entry = InputBox("Please enter a short descriptor for: " & vbNewLine & tempkey & vbNewLine & vbNewLine & "i.e. L5P-LM Post Thermal Cycle")
If entry <> "" Then
dict(tempkey) = entry
Else
Exit Sub
End If
End If
字符串“tempkey”的长度约为 109 个字符,并且不包含空格。
下面是 InputBox 的样子:
如你所见,'seq' 之后和 'from' 之前的 'tempkey' 字符串中的所有内容都从 InputBox 中省略了。
这是我的调试器在显示 InputBox 之前的 'tempkey' 值的样子:
为什么字符串显示不正确?
【问题讨论】:
出于好奇,为什么 InputBox 行以above)_
结尾,而监视窗口显示below)_
。我认为这仍然是同一个问题,只是不同files(i)
。
没错,它们只是不同的文件。同样的问题。
看起来它没有在单词中间添加换行符(因为所有文本都用下划线连接,直到“从下/上”,它算作一个长词)。您可以在字符串中添加空格。如果这是不可能的,您可能最好使用自定义用户表单,您可以对其进行编辑以满足您的需求。
这是一个很长的镜头,但我想知道Application.InputBox
是否有同样的问题。
我的猜测是,您的字符串看起来像一个单词,直到“from”之前的空格,并且控件不是换行而是截断,只有在到达空格时才换行(似乎表示新词)。
【参考方案1】:
InputBox 字符串限制为 255 个字符,所以我猜这就是问题所在。
您是否尝试过将 tempkey 拆分为两个单独的字符串?
Dim s1 As String
Dim s2 As String
s1 = Left(tempkey, Len(s) / 2)
s2 = Right(tempkey, Len(s) / 2)
entry = InputBox("Please enter a short descriptor for: " & vbNewLine & s1 & s2 & vbNewLine & vbNewLine & "i.e. L5P-LM Post Thermal Cycle")
【讨论】:
输入框本身可能限制为255个字符,但消息字符串是问题,小于255。 @Jeff 这似乎不是问题所在。 InputBox 中的内容少于 255 个字符。问题似乎是我的字符串包含一个很长的第一个“单词”,没有任何空格,而 InputBox 处理得不好;它会切断单词的剩余字符,这些字符不适合 InputBox 的固定宽度。以上是关于VBA 输入框没有正确显示字符串?的主要内容,如果未能解决你的问题,请参考以下文章