2011-10-01 17 views
7

मेरे पास वाक्य है "मैं उनमें से 50 को पसंद करूंगा, कृपया सेल ए 1 में। मैं किसी भी संख्यात्मक अक्षर लाल पाठ (केवल संख्यात्मक वर्ण) बनाना चाहता हूं। मैं यह कैसे करु? यहां मेरे पास है ...सेल में कुछ वर्णों का रंग बदलें

Sub RedText() 

Dim i As Integer 

For i = 1 To Len(Cells(1, 1).Value) 
    If IsNumeric(Mid(Cells(1, 1).Value, i, 1)) = True Then 
     'make the character red text 
    End If 
Next 

End Sub 

किसी भी मदद की सराहना की जाएगी।

उत्तर

11

ऐसा करने के लिए वर्ण (शुरू, लंबाई) संपत्ति का उपयोग कर सकते हैं। आप टेक्स्ट को एक स्ट्रिंग और लूप में भी स्टोर कर सकते हैं, जो कई सेल के साथ काम करते समय तेज़ होगा।

Sub RedText() 

Dim i As Long 
Dim text As String 

text = Cells(1, 1).Value 

For i = 1 To Len(text) 
    If IsNumeric(Mid$(text, i, 1)) = True Then 
     Cells(1, 1).Characters(i, 1).Font.Color = vbRed 
    End If 
Next 

End Sub 
+0

नहीं है कि मैं मध्य $ इस्तेमाल किया मिड के बजाय, क्योंकि यह स्ट्रिंग संस्करण (संस्करण नहीं संस्करण) समारोह की है आप यथोचित बड़े डेटा कार्रवाई कर रहे हैं अगर एक गति लाभ प्रदान करता है। यह आपको प्रदर्शन में बहुत छोटा बढ़ावा देगा जो आप इसे बहुत अधिक चलाने के लिए जोड़ सकते हैं, लेकिन यह सबसे अच्छा अभ्यास है। – aevanko

+0

हाँ अतिरिक्त कलाकारों को वीबीए करना है कचरा है। इसके अलावा पूर्णांक की तरह - वीबीए इसे हर समय लंबे समय तक रोकता है इसलिए वास्तव में वीबीए में एक पूर्णांक का उपयोग करने का कोई कारण नहीं है। – aevanko

8

आप एक ही प्रभाव के लिए एक रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं: यहाँ एक उदाहरण है।

कोड होने वाले रेगेक्स दृष्टिकोण का लाभ प्रत्येक व्यक्तिगत चरित्र का परीक्षण करने के बजाय संख्यात्मक वर्णों के किसी भी समूह को अलग करेगा (या किसी भी तार को छोड़ने वाले किसी भी तार को छोड़ दें)।

तो यह भी सेट

Sub RegExpRed() 

    Dim objRegex As Object 
    Dim RegMC As Object 
    Dim RegM As Object 

    Set objRegex = CreateObject("vbscript.regexp") 
    With objRegex 
     .Global = True 
     .Pattern = "\d+" 
     If .test(Cells(1, 1).Value) Then 
      Set RegMC = .Execute(Cells(1, 1).Value) 
      For Each RegM In RegMC 
       Cells(1, 1).Characters(RegM.FirstIndex + 1, RegM.Length).Font.Color = vbRed 
      Next 
     End If 
    End With 

End Sub 
संबंधित मुद्दे