2017-10-11 73 views
5

Excel'de, belirli bir değeri (başka bir hücre içeriğine göre) hesaplayan ve çağrı hücresi değerini ve iç rengi belirleyen çok basit bir VBA işlevi oluşturmaya çalışıyorum. Değer hesaplamasıyla iyiyim, ama bir döngü için beni fırlatan iç renklendirme.Change Calling Cell İç Renk

Metin ve yazı tipi rengini ayarlamak için aşağıdakileri yapabilirsiniz:

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

Ama doğrusu hücre iç rengini ayarlamak istiyorum. Aşağıdaki kodun birkaç farklı yinelemesini denedim, ancak bu her zaman çağrı hücresinde bir değer hatası veriyor.

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

Neyse, benzer değişikliklerin (Örn here) hakkında konuşmak diğer bazı SO mesajları gördüm ama bunların çözümleri benim için çalışmaya görünmüyor. Koşullu biçimlendirme ile bunu yapmayı tercih etmem çünkü farklı Excel dosyaları arasında kolayca aktarım yapabileceğim bir şey istiyorum. Düzenli modülünde bu her ikisiyle

cevap

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 

Bkz: Using a UDF in Excel to update the worksheet hile yok

+0

! Teşekkürler @tim. Bu, yazı tipi rengini değiştirmek ne kadar kolay olduğu göz önüne alındığında beklenenden daha karmaşık ... En azından işe yarıyor. – Ryan

+1

Bazı nedenlerle yazı tipi rengi doğrudan bir işlevden çalışan bir şeydir: hemen hemen her şey bir çalışma gerektiriyor. –