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

Sta*_*ome 5 excel vba excel-vba

在MS Excel中通过VBA宏将超过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
Run Code Online (Sandbox Code Playgroud)

补充: 在单元格中保存以前的字符格式非常重要.

Ral*_*lph 1

以下代码会将 500 写入Acell 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
Run Code Online (Sandbox Code Playgroud)

我希望这能解决你的问题。

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

编辑#1:

以下代码已经过测试,可以正确地将 500 插入A到 cell 中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
Run Code Online (Sandbox Code Playgroud)