简体   繁体   English

将变量的字体颜色更改为单元格中文本的一部分

[英]Change font color for variable as part of text in cell

I am struggling with VBA macro which should color part of the text. 我正在努力使用VBA宏,它应该为文本的一部分着色。

The macro looks like 宏看起来像

Sub Note()
        Dim c As Range
        Dim val As String
        Set c = ActiveCell
        val = InputBox("Add note", "Note text")
            If IsEmpty(c.Value) = True Then
                c.Value = Format(Now(), "DD MMM YY Hh:Nn") & ": " & val
            Else
                c.Value = c.Value & Chr(10) & Format(Now(), "DD MMM YY Hh:Nn") & ": " & val
        End If
        End Sub

And I want to achieve that Now() will be red and rest of text will be green. 我希望实现Now()将为红色,其余文本将为绿色。

I tried to play with .Font.Color = vbRed etc but without any luck 我试着玩.Font.Color = vbRed等,但没有任何运气

I also look on this answer but it not quite what I wanted 我也看看这个答案,但它不是我想要的

Try like this: 试试这样:

Option Explicit

Sub Note()

    Dim c           As Range
    Dim val         As String: val = "vit"
    Dim lngLen      As Long

    Set c = ActiveCell
    c.Value = Format(Now(), "DD MMM YY Hh:Nn") & ": " & val
    lngLen = Len(Format(Now(), "DD MMM YY Hh:Nn"))

    c.Characters(Start:=1, Length:=lngLen).Font.Color = vbRed

End Sub

I have removed the input box, but you can return it easily. 我已经删除了输入框,但您可以轻松返回。 It gives probably what you want.Pretty much, it asks for the length of the Now() format and it colors the first N signs in the formula in red, following the logic from the question you have mentioned in your question. 它可能提供你想要的东西。很多,它要求Now()格式的长度,并按照你在问题中提到的问题的逻辑,将公式中的前N个符号用红色着色。

You linked an answer but you weren't using what was in there, why? 你联系了一个答案,但你没有使用那里的内容,为什么?

Try this : 试试这个 :

Sub Note()
Dim c As Range
Dim val As String
Dim StartChar As Integer, _
    LenColor As Integer
Set c = ActiveCell

val = InputBox("Add note", "Note text")

With c
    .Font.Color = RGB(0, 0, 0)
    If IsEmpty(.Value) = True Then
        StartChar = 1
        LenColor = Len("DD MMM YY Hh:Nn")
        .Value = Format(Now(), "DD MMM YY Hh:Nn") & ": " & val
        .Characters(Start:=StartChar, Length:=LenColor).Font.Color = RGB(255, 0, 0)
    Else
        StartChar = Len(.Value) + 1
        LenColor = Len("DD MMM YY Hh:Nn")
        .Value = .Value & Chr(10) & Format(Now(), "DD MMM YY Hh:Nn") & ": " & val
        .Characters(Start:=StartChar, Length:=LenColor).Font.Color = RGB(255, 0, 0)
    End If
End With 'c
End Sub

Try this: 尝试这个:

Sub Note()
Dim c As Range
Dim val As String
Dim lngPos As Integer
Set c = ActiveCell
val = InputBox("Add note", "Note text")
c.Value = ""
    If IsEmpty(c.Value) = True Then
        c.Value = Format(Now(), "DD MMM YY Hh:Nn") & " - " & val
        lngPos = InStr(ActiveCell.Value, " - ")
        With ActiveCell.Font
            .ColorIndex = 4
        End With
        With ActiveCell.Characters(Start:=1, Length:=lngPos - 1).Font
            .ColorIndex = 3 'or .Color = RGB(255, 0, 0)
        End With
    Else
        c.Value = c.Value & Chr(10) & Format(Now(), "DD MMM YY Hh:Nn") & " - " & val 
        lngPos = InStr(ActiveCell.Value, " - ")
        With ActiveCell.Font
            .ColorIndex = 4
        End With
        With ActiveCell.Characters(Start:=1, Length:=lngPos - 1).Font
            .ColorIndex = 3 'or .Color = RGB(255, 0, 0)
        End With
    End If
End Sub

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM