2017-02-07 9 views
5

में टेक्स्ट के हिस्से के रूप में परिवर्तनीय के लिए फ़ॉन्ट रंग बदलें मैं वीबीए मैक्रो के साथ संघर्ष कर रहा हूं जिसमें टेक्स्ट का हिस्सा रंग होना चाहिए।सेल

मैक्रो तरह

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 

लग रहा है और मुझे लगता है कि अब प्राप्त करने के लिए() लाल और बचे हुए लेख की हरी हो जाएगा हो जाएगा चाहते हैं।

मैं .Font.Color = vbRed आदि के साथ, लेकिन किसी भी भाग्य के बिना खेलने के लिए करने की कोशिश की

मैं भी this answer पर लग रही है लेकिन यह मैं काफी क्या नहीं

उत्तर

2

आपने एक उत्तर जुड़ा हुआ चाहता था, लेकिन आप का उपयोग नहीं कर रहे थे वहां क्या था, क्यों?

इस प्रयास करें:

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 
+0

धन्यवाद एक बहुत, पहले डालने के लिए ठीक काम करता है, लेकिन अगर मैं इसे एक बार और अधिक का उपयोग यह लाल – user7410242

+0

@ user7410242 साथ सभी पाठ का प्रतीक होगा: यह करना होगा! मैंने प्रारंभिक रंग को काले रंग में रीसेट करने के लिए एक लाइन जोड़ा, इसलिए यह ठीक से काम करेगा – R3uK

3

इस तरह का प्रयास करें:

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 

मैं इनपुट बॉक्स को हटा दिया है, लेकिन आप इसे आसानी से लौट सकते हैं। यह संभवतः आपको जो चाहिए वह देता है। बहुत अधिक, यह अब() प्रारूप की लंबाई के लिए पूछता है और यह आपके प्रश्न में उल्लिखित प्रश्न से तर्क के बाद लाल रंग में सूत्र में पहले एन संकेतों को रंग देता है।

1

इस प्रयास करें:

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 
+0

बहुत धन्यवाद, पहले डालने के लिए ठीक काम करता है, लेकिन अगर मैं इसे एक बार और अधिक उपयोग करता हूं तो यह लाल – user7410242

+0

के साथ सभी पाठ को चिह्नित करेगा संपादित पोस्ट का प्रयास करें। –

+0

@pokemon_Man: आप 'if' से पहले' c.Value = "" 'को हटाने के लिए भूल गए; – R3uK