我正在尝试在现有单元格中插入新的文本行而不丢失格式。
在单个单元格中,我有一个循环来添加基于工作表中的列的连接文本。这很好用,但与全局标准相比,我需要能够将某些行格式化为绿色,如果它是加法的,如果它被删除,我需要能够格式化。
例如:
“唐老鸭 1 - 米妮老鼠 1
唐老鸭 2 - 米妮老鼠 2(绿色)
唐老鸭 3 - 米妮老鼠 3
唐老鸭 4 - 米妮老鼠 4 (红色)
高飞 - 39 - 冥王星 - 39
高飞 - 42 - 冥王星 - 42"
我当前的代码执行循环,但问题是每次我用该单元格中的新数据行覆盖时都会丢失现有格式。
If ActiveCell.Offset(0, ColumnOffset) = 1 Then
Need = ActiveCell.Offset(NeedNameOffset, ColumnOffset).Value
DocCode = ActiveCell.Offset(NeedNameOffset + 1, ColumnOffset).Value
If NeedsType = "Data Needs" Then
DestDataNeedsCell.Value = DestDataNeedsCell.Value & NeedsCategory & " - " & Need & vbCrLf
ElseIf NeedsType = "Document Needs" Then
DestDocNeedsCell.Value = DestDocNeedsCell.Value & NeedsCategory & " - " & Need & " (" & DocCode & ")" & vbCrLf
End If
我尝试使用最初似乎可以工作的 Character().Insert 函数,但由于某种原因并没有添加所有数据。我也不认为我改变颜色的方法只是正确地改变了事件线。
If ActiveCell.Offset(0, ColumnOffset) = 1 Then
strValue = ActiveCell.Offset(0, ColumnOffset).Value
Need = ActiveCell.Offset(NeedNameOffset, ColumnOffset).Value
DocCode = ActiveCell.Offset(NeedNameOffset + 1, ColumnOffset).Value
If NeedsType = "Data Needs" Then
If strValue = "+1" Then
startChar = Len(DestDataNeedsCell)
DestDataNeedsCell.Characters(Len(DestDataNeedsCell) + 1, 1).Insert (NeedsCategory & " - " & Need & vbCrLf)
endChar = Len(DestDataNeedsCell)
DestDataNeedsCell.Characters(Start:=startChar, Length:=endChar).Font.Color = vbGreen
ElseIf strValue = "-1" Then
startChar = Len(DestDataNeedsCell)
DestDataNeedsCell.Characters(Len(DestDataNeedsCell) + 1, 1).Insert (NeedsCategory & " - " & Need & vbCrLf)
endChar = Len(DestDataNeedsCell)
DestDataNeedsCell.Characters(Start:=startChar, Length:=endChar).Font.Color = vbRed
Else
DestDataNeedsCell.Characters(Len(DestDataNeedsCell) + 1, 1).Insert (NeedsCategory & " - " & Need & vbCrLf)
End If
最佳答案
也许这个简单的例子会有所帮助。如果您在 A1 中有示例中的起始文本,然后在 A5 中有“Donald Duck 4 - Minnie Mouse 4”,这会将其添加到末尾并将文本着色为红色。
Sub x()
Dim r As Range, n As Long
n = Len(Range("A5")) 'new text added to end of A1
With Range("A1")
.Characters(Len(.Value) + 1).Insert (vbCrLf & Range("A5"))
.Characters(Len(.Value) - n, n + 1).Font.Color = vbRed
End With
End Sub
关于excel - 使用 Charcter().Insert 格式化单元格中的文本片段 (VBA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46452305/