2017-10-11 26 views
5

मैं एक्सेल में एक बहुत ही सरल वीबीए फ़ंक्शन बनाने की कोशिश कर रहा हूं जो एक विशिष्ट मान (अन्य कोशिकाओं की सामग्री के आधार पर) की गणना करता है और कॉलिंग सेल मान और आंतरिक रंग सेट करता है। मैं मूल्य गणना के साथ ठीक हूं, लेकिन यह आंतरिक रंग है जो मुझे लूप के लिए फेंक रहा है।कॉलिंग सेल आंतरिक रंग बदलें

मैं पाठ और फ़ॉन्ट रंग सेट करने के लिए निम्न कर सकते हैं:

Function Test() 
    Application.Caller.Font.ColorIndex = 3 
    Test = "Hello" 
End Function 

लेकिन मैं नहीं बल्कि सेल इंटीरियर रंग सेट करेंगे। मैंने नीचे दिए गए कोड के दो अलग-अलग पुनरावृत्तियों की कोशिश की है, लेकिन यह हमेशा मुझे कॉलिंग सेल में एक मूल्य त्रुटि देता है।

Function Test() 
    Application.Caller.Interior.ColorIndex = 3 
    Test = "Hello" 
End Function 

वैसे भी, मैं कुछ अन्य SO पदों कि इसी तरह के परिवर्तन (उदा here) के बारे में बात देखा है, लेकिन उनके समाधान मेरे लिए काम करने के लिए नहीं है। मैं इसे सशर्त स्वरूपण के साथ नहीं करना चाहूंगा क्योंकि मुझे कुछ ऐसा चाहिए जो मैं आसानी से विभिन्न एक्सेल फ़ाइलों के बीच स्थानांतरित कर सकूं।

उत्तर

8
एक नियमित रूप से मॉड्यूल में इन दोनों के साथ

:

Sub ChangeIt(c1 As Range) 
    c1.Interior.ColorIndex = 3 
End Sub 

Function Test() 

    With Application.Caller   
     .Parent.Evaluate "Changeit(" & .Address(False, False) & ")" 
    End With 
    Test = "Hello" 

End Function 

देखें: Using a UDF in Excel to update the worksheet

+0

यही काम कर देता है! धन्यवाद @ टीआईएम। यह अपेक्षाकृत अधिक जटिल है कि मुझे उम्मीद थी कि फ़ॉन्ट रंग बदलने में कितना आसान है ... कम से कम यह काम करता है। – Ryan

+1

किसी कारण से फ़ॉन्ट रंग एक ऐसी चीज है जो सीधे फ़ंक्शन से काम करती है: बाकी सब कुछ के लिए एक काम-आसपास की आवश्यकता होती है। –

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