Excel 2007/2010で不思議な現象に出くわしています

以下のコードを標準モジュールに書きます

Sub main()
  Cells(1, 1).Interior.Color = vbRed
End Sub

Alt + F8で「main」マクロを実行すると「A1セル」が赤色に塗られます

ところが

function main()
  Cells(1, 1).Interior.Color = vbRed
  main = ""
End function

このような関数を作り、ワークシート内で使用すると
「#VALUE!」が戻ってきてA1セルも赤色に塗られません。

「Cells(1, 1).Interior.Color = vbRed」の箇所をコメントアウトすると関数は正常に動作します
Functionプロシージャ内部ではセルの背景色を変えるなどの処理は出来ないのでしょうか?