0

次の VBA 関数があります。

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

私のExcelシートでは、これを次のように呼んでいます:

=IndexOfColor(D15:M24,37)

そして、常に取得し"#VALUE"ます。関数を最後までデバッグしましたが、問題はありません。これは1つの結果を返すだけですが(範囲を見ていて、色付きのセルが1つしかありません)、これを配列の結果(CTRL-SHIFT-ENTER)にすることも試みました。

提案?

4

1 に答える 1

1

これはあなたがしようとしていることですか?セルに小数点がない場合は、次のように置き換えることができVariantます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
于 2012-08-16T13:25:49.387 に答える