在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
加了: 将以前格式的字符保存在单元格中非常重要。
答案 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")
一起使用,那么它将起作用。
以下代码已经过测试,并且正确地将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
他们在该支持页面上提供了一种解决方法。