2017-10-11 13 views
5

私は、(別のセルの内容に基づいて)特定の値を計算し、呼び出しセルの値と内部の色を設定する非常に単純なVBA関数をExcelで作成しようとしています。私は値の計算には問題ありませんが、それはループのために私を投げている内装の色です。呼び出しセルの内部の色を変更

は、私は、テキストとフォントの色を設定するには、次の操作を行うことができます。

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

しかし、私はむしろ、細胞内部の色を設定したいです。私は以下のコードのいくつかの異なる反復を試しましたが、これは常に呼び出し側のセルに値のエラーを与えます。

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

とにかく、私は同様の変化(例えばhere)の話をいくつかの他のSOの記事を見てきましたが、その解決策は、私のために働くしていないようです。条件付き書式設定では、Excelファイル間で簡単に転送できるものが必要なので、これをやりたいとは思わない。通常のモジュールでこれらの両方で

答えて

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

何らかの理由で、フォントの色が関数から直接的に作用することが1つあります。それ以外のものは回避策が必要です。 –

関連する問題