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

时间:2016-05-17 09:18:57

标签: 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

加了: 将以前格式的字符保存在单元格中非常重要。

3 个答案:

答案 0 :(得分:1)

以下代码会将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之后插入字符。但是,您的字符串目前仅L长且 L + 1。插入另一个A后,该单元格中将包含L + 1个字符。但还没有。因此,如果您将代码与Range("A1").Characters(L, 1).Insert ("A")一起使用,那么它将起作用。

编辑#1:

以下代码已经过测试,并且正确地将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

答案 1 :(得分:0)

问题因此附加评论而改变
https://stackoverflow.com/users/4742533/stayathome
将返回并更新此

初步回答

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

下面的代码将您的示例字符串附加到测试字符串(长度为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

答案 2 :(得分:-1)

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

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

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

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