使用Charcter()。插入以格式化单元格中的文本片段(VBA)

时间:2017-09-27 15:56:33

标签: excel-vba vba excel

我试图在不丢失格式的情况下将新的文本行插入现有单元格。

在单个单元格中,我有一个循环来根据工作表中的列添加连接文本。这样可以正常工作,但我需要能够将某些行格式化为绿色(如果它是加性的)和RED(如果它与全局标准相比被删除)。

例如:

" Donald Duck 1 - Minnie Mouse 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()。插入函数,它似乎最初工作,但由于某种原因不会添加所有数据。我也不认为我改变颜色的方法正好改变了活动线。

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

1 个答案:

答案 0 :(得分:0)

也许这个简单的例子会有所帮助。如果您在A1中的示例中有起始文本,然后在A5中使用“Donald Duck 4 - Minnie Mouse 4”,则会将其添加到最后并将文本着色为红色。

/api/Parameters/{ParameterId}