Characters.Insert方法(Excel)将文本限制为255个字符

在MS Excel中,通过VBAmacros添加超过255个字符到单个单元中真的不可能?

示例代码:

Option Explicit Sub TestSub() Dim L As Long ' Const str = "1" & vbLf Dim i As Integer Range("A1").ClearContents Range("A1").WrapText = True For i = 1 To 260 ' any number greatest than 255 L = Range("A1").Characters.Count Debug.Print L Range("A1").Characters(L + 1, 1).Insert ("A") Next i End Sub 

补充:保存单元格中的字符格式是非常重要的。

下面的代码将500 A写入单元格A1 。 之后,其他A将被格式化为粗体。

 Public Sub tmpSO() For i = 1 To 500 Range("A1").Value = Range("A1").Value & "A" Next i For i = 1 To 500 If i Mod 2 = 0 Then Range("A1").Characters(i, 1).Font.Bold = True Next i End Sub 

我希望能解决你的问题。

注意:您的代码将无法正常工作,因为您正尝试 L + 1 之后插入一个字符。 然而,你的string目前只有L长而不是 L + 1 。 一旦你插入另一个A你将在该单元格中有L + 1字符。 但尚未。 所以,如果你使用Range("A1").Characters(L, 1).Insert ("A")代码Range("A1").Characters(L, 1).Insert ("A")那么它将工作。

编辑#1:

下面的代码已经过testing,并正确地将500 A插入单元格A1 。 此外,一些A将被格式化为粗体。

 Sub TestSub() Dim i As Integer Range("A1").ClearContents Range("A1").WrapText = True Range("A1").Font.Bold = False For i = 1 To 500 Range("A1").Characters(i, 1).Insert ("A") Next i For i = 1 To 500 Step 10 Range("A1").Characters(i, 3).Font.Bold = True Next i End Sub 

问题改变了这个额外的评论
https://stackoverflow.com/users/4742533/stayathome
将返回并更新这个

最初的答案

您可以使用字符格式化部分string。

下面的代码将您的示例string附加到testingstring(长度为300个字符),然后使最后三个斜体,之前的三个粗体。

 Sub LikeThis() Dim StrIn As String StrIn = "aaaabbbccc" [a1] = Application.Rept("xyz", 100) [a1].Value2 = [a1].Value2 & StrIn [a1].Characters(Len([a1]) - 5, 3).Font.Bold = True [a1].Characters(Len([a1]) - 2, 3).Font.Italic = True End Sub 

我认为这是由于Excel。 Microsoft先生:“如果您使用Microsoft Visual Basic for Applications过程将长度超过255个字符的string传递给对象(例如文本框),则Microsoft Excel可能会将该string截断为255个字符,或者可能无法在文本框中inputstring“。

即使你没有传递超过255个字符的string,我认为这是相关的

https://support.microsoft.com/en-us/kb/213841

他们在该支持页面上提供解决方法。