2016-09-22 102 views
-1

所以我有以下VBA代码:VBA:抓住一个单元格值取决于它的颜色

Function CountCcolor(range_data As Range, criteria As Range) As Long 

Dim datax As Range 
Dim xcolor As Long 

xcolor = criteria.Interior.ColorIndex 

For Each datax In range_data 
    If datax.Interior.ColorIndex = xcolor Then 
     CountCcolor = datax.Select 
    End If 
Next datax 

End Function 

此代码循环的特定背景色的范围内给定的andsearches。然后抓取该颜色的值并将其放入选定的单元格中。

我的问题是这只适用于具有正确背景颜色的数据是数字而不是文本。

任何想法为什么它不能抓住细胞的文本?

它只显示#VALUE!如果它的文字在这一刻。

+0

是的,你确定你的'功能CountCcolor为Long',所以只接受数字。 –

+0

我也试过datax.Text - 但没有运气 – Silk13

+0

你不能,导致你的'CountCcolor'被定义为'长' –

回答

0
CountCcolor is defined as Long 

代码应该是,

Function CountCcolor(range_data As Range, criteria As Range) As String 

Dim datax As Range 
Dim xcolor As Long 

xcolor = criteria.Interior.ColorIndex 

For Each datax In range_data 
    If datax.Interior.ColorIndex = xcolor Then 
    CountCcolor = datax.Select 
End If 
Next datax 
End Function 

感谢@Shai瑞士雷达表用于察觉

相关问题