2011-08-23 82 views
0

我想过滤大的Excel表中的行 - 我想只显示具有特定内部颜色的单元格(例如黄色)。 有没有简单的方法来做到这一点?我的想法是写一个VBA函数 (东西呈三角是here如何过滤基于单元格内部颜色的Excel单元格?

*public function kolory(komorka as range) 
kolory-komorka.interior.color 
end function* 

当我有这个功能,我能够生成特定的代码为每个颜色,然后用它来过滤它(我甚至可以展开 不幸的是Excel并没有看到我的功能(尽管启用了宏),并且在很多情况下我无法使用用VB编写的代码

+0

什么不能与你的函数工作? “不幸的是Excel没有看到我的功能”还不够清楚 – JMax

+0

对于初学者来说,也许删除那些'*'字符?他们在那里做什么? –

回答

0

你的意思是它没有出现在宏窗口中吗?你是否希望它显示为工作表函数/用户定义函数? 如果要将其用作UDF,则需要返回类型并将代码放入常规模块中。代码看起来像

public function kolory(komorka as range) as integer 
    dim cellColor as integer 
    cellColor = komorka.interior.color 
    kolory = cellColor 
end function 

如果你想,因为你需要一个非可选输入(komorka as range)使用这个作为一个独立的程序,你不能。它需要从一些可以传递komorka值的包含函数/子中调用。一旦你有什么可以调用你的kolory函数,你可以在你的代码中使用它。代码看起来与上面相同。

+0

在所有可能的数据类型中,为什么要使用'String'来包含颜色信息? –

+0

是的,你是对的...不好的选择。我改为整数。更好? – Brad

+0

更糟......尝试一下,看看会发生什么。欲了解更多信息,请参阅'.Color'和'RGB'功能的帮助文件。 –

0

这是你的函数正确的语法:

Public Function kolory(komorka As Range) As Long 
    kolory = komorka.Interior.Color 
End Function 

即摆脱那些*并与=取代-

在Excel工作表中,要返回单元格A1的颜色,请在其他单元格中键入=kolory(A1)

当然,如果你只是编写VBA代码,你并不需要的功能kolory因为它只是komorka.Interior.Color的包装...