2012-08-16 2 views
0

내가 다음 VBA 기능이 있습니다엑셀 VBA는 : 계산 결과의 셀 값을 반환

=IndexOfColor(D15:M24,37) 

그리고 항상 "#VALUE"를 얻을 : 내 엑셀 시트에서

Function IndexOfColor(InRange As Range, ColorIndex As Long) As Excel.Range 
Dim R As Range 

Application.Volatile True 
If IsValidColorIndex(ColorIndex) = False Then 
    IndexOfColor = 0 
    Exit Function 
End If 

For Each R In InRange.Cells 
    If R.Interior.ColorIndex = ColorIndex Then 
     IndexOfColor = R 
     Exit Function 
    End If 
Next R 

IndexOfColor = 0 
End Function 

을,이를 호출합니다. 마지막까지 함수를 디버깅했습니다. 문제는 없었습니다. 이것은 단지 1 개의 결과를 반환해야하지만 (나는 범위를보고 있는데 단 하나의 색깔있는 셀이 있습니다), 배열 결과 (CTRL-SHIFT-ENTER)를 만들려고했습니다.

제안 사항?

+0

CI는 무엇으로 Variant을 대체 할 수 있습니까? 'ColorIndex'가 아니겠습니까? –

+0

'이것은 단지 1 개의 결과 만 반환해야합니다. '또한'1'은 무엇입니까? 어떻게 그곳에 도착 했습니까? 이 함수는 ') As Excel.Range' 범위를 반환해야합니까? 아마도 당신이하려는 것을 정확하게 설명 할 수 있다면? –

+0

당신의 함수가'InRange'와'ColorIndex'의 두 매개 변수로 정의 된 것을 보았습니다 만,'D15 : M24','37','0'의 3 개의 인자를 가진 함수를 보았습니다 – SeanC

답변

1

이게 너가하려는거야? 세포가 소수가되지 않습니다 경우에 당신은 Long

Function IndexOfColor(InRange As Range, ColorIndex As Long) As Variant 
    Dim R As Range 

    IndexOfColor = 0 

    On Error GoTo Whoa 

    Application.Volatile True 

    If Not IsValidColorIndex(ColorIndex) = False Then 
     For Each R In InRange.Cells 
      If R.Interior.ColorIndex = ColorIndex Then 
       IndexOfColor = R.Value 
       Exit For 
      End If 
     Next R 
    End If 
Whoa: 
End Function 
+0

"길게"내가 찾고 있던 것이 었습니다. 실제로, 나는 이전에 이것을 가지고 있었지만, 잘못된 포맷으로 눈이 멀었 기 때문에 그 숫자가 어떤 종류의 포인터라고 생각했습니다. – Jahmic