用户定义的函数,用于更改单元格的颜色

TMH*_*885 9 excel vba excel-vba

我见过许多用户在尝试使用用户定义的函数更改单元格颜色时提出问题.我总是认为不可能这样做.我的理解是,除了包含公式的单元格的值之外,用户定义的函数不能更改单元格的任何属性.Subs是改变细胞本身的东西.

但是,在玩一些代码来测试时,我发现情况并非总是如此.
使用简单的代码:

Function ColorCell(rng As Range)
If rng.Value = 1 Then
   ColorCell = False
Else
   ColorCell = True
   rng.Interior.ColorIndex = 3
End If
End Function
Run Code Online (Sandbox Code Playgroud)

如果我将函数输入单元格,我实现了预期的结果,没有单元格改变颜色.但是,如果我使用公式>插入函数按钮并导航到我的公式以这种方式插入它,它为目标单元格着色.
细胞颜色功能

这怎么可能,为什么在以不同方式输入时功能表现不同?

编辑:这是使用Excel 2007测试的

Nik*_*ilP 4

使用此代码...只需替换工作表名称并尝试

Sheets("sheet_name").range(j:j).clear

for j=2 to 15
if Sheets("sheet_name").Cells(j, 1).value=1 then

else

Sheets("sheet_name").Cells(j, 1).Interior.ColorIndex = 3
next j
Run Code Online (Sandbox Code Playgroud)