2009-06-15 10 views
12

मान लेते हैं मैं से निम्न श्रेणी करतेएक्सेल 2007 सशर्त स्वरूपण - सेल रंग कैसे प्राप्त करें? (A1: C3)

A B C 
1 -1 1 1 
2 -1 0 0 
3 0 0 1 

अब मैं निम्न श्रेणी का चयन किया है, और सशर्त स्वरूपण का उपयोग कर (डिफ़ॉल्ट लाल, पीले हरे रंग पैमाने का उपयोग) यह स्वरूपित .... अब सीमा रंग

A   B   C 
1 Green Red  Red 
2 Green Yellow Yellow 
3 Yellow Yellow Red 

अब मैं उदाहरण MsgBox रेंज ("A1")। Interior.Color के लिए, सीमा में किसी भी सेल का रंग पूछना चाहता हूँ लेकिन यह कहना नहीं है कि यह ग्रीन है बन गया है, क्यों? क्या आप मेरी मदद कर सकते हैं?

रेंज ("A1")। Interior.Color हमेशा 16,777,215 रेंज ("A1") देता है। Interior.ColorIndex हमेशा -4142

(कोई फर्क नहीं पड़ता कि क्या A1 का रंग लाल, नीले, हरे रंग की है देता है , ...)

रेंज ("ए 1", "सी 3")। प्रारूपकंडिशन। गणना यह हमेशा 0 देता है, क्यों?

उत्तर

0

के बाद से मैं एक समय में एक से अधिक तीन अलग अलग रंग हो सकता है ... मैं सशर्त स्वरूपण के डिफ़ॉल्ट रंग के साथ इस से निपटने में किसी भी अच्छी तरह से नहीं मिला ... मैं इसे इस तरह से किया था। तब जब भी मैं सेल के रंग से पूछता हूं, मैं सही रंग पुनः प्राप्त करता हूं!

for (int t = 0; t < d_distinct.Length; t++) 
{       
    Excel.FormatCondition cond = 
    (Excel.FormatCondition)range.FormatConditions.Add(
    Excel.XlFormatConditionType.xlCellValue, 
    Excel.XlFormatConditionOperator.xlEqual, 
    "="+d_distinct[t], 
    mis, mis, mis, mis, mis); 
    cond.Interior.PatternColorIndex = 
    Excel.Constants.xlAutomatic; 
    cond.Interior.TintAndShade = 0; 
    cond.Interior.Color = ColorTranslator.ToWin32(c[t]); 
    cond.StopIfTrue = false;       
} 

d_distinct एक श्रेणी में सभी अलग-अलग मान रखती है ... ग है एक रंग [] है जो हर अलग मूल्य के लिए अलग रंग रखती है! इस कोड को आसानी से vb में अनुवादित किया जा सकता है!

0
XlColorIndex Enumeration ColorIndex=-4142 साधन कोई रंग

क्यों ऐसा होता है मैं पता कर रहा हूँ के रूप में के अनुसार

। लौटा मूल्य आरजीबी मूल्य का दशमलव प्रतिनिधित्व प्रतीत होता है। this script के उन्नत संस्करण हेक्स RGB अंकन में मूल्य डिक्रिप्ट करने के लिए

Function RGB(CellRef As Variant) 
    RGB = ToHex(Range(CellRef).Interior.Color) 
End Function 

Function ToHex(ByVal N As Long) As String 
    strH = "" 
    For i = 1 To 6 
     d = N Mod 16 
     strH = Chr(48 + (d Mod 9) + 16 * (d \ 9)) & strH 
     N = N \ 16 
    Next i 
    strH2 = "" 
    strH2 = Right$(strH, 2) & Mid$(strH, 3, 2) & Left$(strH, 2) 
    ToHex = strH2 
End Function 
+1

मैं केवल रंग या सेल की ColorIndex (जो सशर्त स्वरूपण का उपयोग कर रंग का है) में दिलचस्पी केवल ... वैसे भी धन्यवाद –

0

एक रेंज में एक सेल का रंग पाने के लिए आपको रेंज के रूप ("A1" में सरणी के अंदर अलग-अलग कक्ष संदर्भ की जरूरत है , "सी 3")। सेल (1,1) (सेल ए 1 के लिए)। एक्सेल सहायता बहुत अच्छी है यदि आप उस संपत्ति का नाम देखते हैं जिसमें आपको समस्याएं हैं।

इसके अलावा, एक्सेल 2007 अपने रंग प्रकारों के लिए इंटीग्रर्स का उपयोग करता है, इसलिए आपकी सबसे अच्छी शर्त रंग सूचकांक को पूर्णांक में असाइन करना है, और अपने पूरे कार्यक्रम में इसका उपयोग करना है। आपके उदाहरण के लिए, कोशिश:

Green = Range("A1","C3").Cells(1,1).Interior.Color 
Yellow = Range("A1","C3").Cells(1,3).Interior.Color 
Red = Range("A1","C3").Cells(2,1).Interior.Color 

और फिर सभी लाल करने के लिए रंग स्विच करने के लिए:

Range("A1","C3").Interior.Color = Red 

फिर, कैसे कोशिकाओं का उपयोग करने के लिए Excel मदद की जाँच ([RowIndex], [ColumnIndex]) ।

यदि उपर्युक्त आपके लिए काम नहीं करता है, तो यह देखने के लिए जांचें .इंटरियर। पैटर्नर्नर इंडेक्स बराबर है। मैं आमतौर पर xlAutomatic (ठोस रंग) पर सेट छोड़ देता हूं, और यदि रंग बदल नहीं रहा है तो इसे किसी और चीज़ पर सेट किया जा सकता है।

+0

MsgBox रेंज ("ए 1", "सी 3")। सेल (1, 1) .इंटरियर। रंग एमएसबीबॉक्स रेंज ("ए 1", "सी 3")। सेल (1, 1) .इंटरियर। रंग इंडेक्स ये दो अभी भी क्रमश: 16777215 और -4142, –

+0

Msgbox रेंज ("ए 1", "सी 3") लौटें। सेल (1, 1) .इंटरियर। पैटर्नकॉलर इंडेक्स यह रिटर्न -4142 –

+0

क्या आपने कोड के माध्यम से मैन्युअल रूप से पृष्ठभूमि रंग बदलने की कोशिश की है? –

10

.तरी। रंग "वास्तविक" रंग देता है, न कि सशर्त रूप से स्वरूपित रंग परिणाम।

@sss: यह एपीआई के माध्यम से उपलब्ध नहीं है।

सबसे अच्छा आप सशर्त स्वरूपण में उपयोग की जाने वाली स्थितियों का परीक्षण करना चाहते हैं।

इससे बचने के लिए डुप्लिकेट कोड में, मैं सुझाव देता हूं कि आपके सशर्त मानदंडों को यूडीएफ में ले जाएं।उदाहरण:

Function IsGroup1(ByVal testvalue As Variant) As Boolean 
    IsGroup1 = (testvalue < 0) 
End Function 

Function IsGroup2(ByVal testvalue As Variant) As Boolean 
    IsGroup1 = (testvalue = 0) 
End Function 

Function IsGroup3(ByVal testvalue As Variant) As Boolean 
    IsGroup1 = (testvalue > 0) 
End Function 

फिर अपने सशर्त स्वरूपण में इन सूत्रों का उपयोग करें:

=IsGroup1(A1) 
=IsGroup2(A1) 
=IsGroup3(A1) 

फिर अपने कोड, बल्कि कोशिकाओं की रंग को देख तुलना में, देखने के लिए अगर स्थिति उत्पन्न होने पर दिखता है:

If IsGroup1(Range("$A$1").Value) Then MsgBox "I'm red!" 
+0

क्या आप मुझे दिखा सकते हैं कि सशर्त रूप से स्वरूपित रंग कैसे प्राप्त करें? –

+1

मैं आपके उत्तर के महत्व को कैसे बढ़ा सकता हूं? –

+0

मेरे उत्तर के बाईं ओर "0" संख्या के ऊपर "ऊपर" बटन पर क्लिक करें, या यदि यह उत्तर है जिसे आप स्वीकार करना चाहते हैं, तो मेरे उत्तर के बाईं ओर दिखाई देने वाली उल्लिखित "चेक" पर क्लिक करें। – richardtallent

0

ऐसा नहीं लगता है कि "सशर्त प्रारूप"-रंग प्रोग्रामेटिक रूप से उपलब्ध है। मैं क्या सुझाव दूंगा कि, इसके बजाय, आप एक छोटा सा फ़ंक्शन लिखते हैं जो सेल रंग की गणना करता है, और फिर जब भी आप मान संपादित करते हैं तो उसे सक्रिय सेल पर चलाने के लिए मैक्रो सेट करें। उदाहरण के लिए (छद्म-कोड के लिए खेद है - मैं एक VBA विशेषज्ञ अब और नहीं कर रहा हूँ):

Function GetColorForThisCell(Optional WhatCell as String) as Int 

    If WhatCell="" Then WhatCell = ActiveCell 

    If Range(WhatCell).value = -1 then GetColorForThisCell = vbGreen 
    If Range(WhatCell).value = 0 then GetColorForThisCell = vbYellow 
    If Range(WhatCell).value = 1 then GetColorForThisCell = vbRed 
End Function 

Sub JustEditedCell 
    ActiveCell.color = GetColorForThisCell() 
End Sub 

Sub GetColorOfACell(WhatCell as string) 
    Msgbox(GetColorForThisCell(WhatCell)) 
End Sub 

हालांकि आप उपयोग करने के लिए निर्मित एक्सेल सशर्त स्वरूपण, इस एक ही बात हासिल करेगी सक्षम नहीं होगा , और आप कोड से रंग पढ़ने में सक्षम होंगे। इसका कोई मतलब भी है क्या?

3

@richardtallent का पालन करने के रूप में (क्षमा करें, मैं टिप्पणियां नहीं कर सका), निम्न लिंक आपको एक ऐसा फ़ंक्शन प्राप्त करेगा जो आपको आपके लिए सशर्त स्वरूपण का मूल्यांकन करके रंग सूचकांक देता है।

http://www.bettersolutions.com/excel/EPX299/LI041931911.htm

6

आपको सेल के सशर्त स्वरूपण रंग को पुनर्प्राप्त करने के लिए <Cell>.FormatConditions(index that is active).Interior.ColorIndex को संदर्भित करने की आवश्यकता है।

आप एक उदाहरण के लिए नीचे दिए गए लिंक का उल्लेख कर सकते:

http://www.xldynamic.com/source/xld.CFConditions.html#specific

+0

+1, लेकिन ध्यान दें कि ' .FormatConditions (इंडेक्स जो सक्रिय है) 'एक ऑब्जेक्ट देता है जिसे' FormatCondition' टाइप करने के लिए डालने की आवश्यकता होगी। –

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