vba - 用户定义的函数来改变单元格的颜色

标签 vba excel

我看到许多用户提出问题,试图使用用户定义的函数更改单元格的颜色。我一直觉得不可能这样做。我的理解是,用户定义的函数不能更改单元格的任何属性,除了包含公式的单元格的值。潜艇是改变细胞本身的东西。

但是,当使用一些代码来测试这一点时,我发现情况并非总是如此。
使用简单的代码:

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

如果我将函数输入到单元格中,我会得到预期的结果,没有单元格改变颜色。但是,如果我使用“公式”>“插入函数”按钮并导航到我的公式以这种方式插入它,它确实会为目标单元格着色。
Cell Color Function

这怎么可能?为什么以不同方式输入时该函数的行为会有所不同?

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

最佳答案

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

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

关于vba - 用户定义的函数来改变单元格的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30539109/

相关文章:

excel - 使用 instr 从出现在另一个表行中的源表行中查找 3 个匹配的单元格值

excel - 通过 VBA 在 Excel 中节省时间过长

excel - 如何在excel或VBA中搜索具有多个 "-"的项目?

Python:使用 Win32 COM Api 打开 Excel 工作簿

php - yii2 : Setting rules for csv file upload and retaining original filename

excel - 根据屏幕分辨率调整工作表缩放级别

excel - 何时使用 range.value?

vba - Excel宏执行碾压,试图简化公式

vba - 全局变量不能跨类生存?

vba - Excel VBA : How to sum only values larger than a specific value?