用于提取单元格值的vba访问函数

时间:2015-03-27 09:22:28

标签: excel vba excel-vba

我试图为某列的第一个前一个增值单元格的提取单元格字符串值编写一个函数。

我试着更好地解释一下: 我在巫婆的专栏中并不是所有的细胞cointans值。 因此,如果我想构建一个接受参数1单元格的函数,例如' A5&#39 ;. 如果进入A5单元格,则没有任何值,它检查前一个单元格(A4)是否具有某个值。如果再次失败,它会递归返回(A3..A2..A1),直到找到它为止。

Public Function getPreviousValorizedCellValue(ByVal cell As Range) As String
If (cell.Value = "") Then
    Set cell = cell.Offset(-1, 0)
    getPreviousValorizedCellValue (cell)
Else: getPreviousValorizedCellValue = cell.Value
End If
End Function

它不起作用。 Excel给我错误

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

Public Sub TestgetPrevious()
    Dim cell As Range

    Set cell = ActiveSheet.Range("A5")

    MsgBox getPreviousValorizedCellValue_v2(cell)
End Sub


Public Function getPreviousValorizedCellValue_v2(ByVal cell As Range) As String
    Debug.Print cell.Address

    If cell.Row <= 0 Then Exit Function

    If (Trim(cell.Value = "")) Then
        If cell.Row > 1 Then
            Set cell = cell.Offset(-1, 0)

            getPreviousValorizedCellValue_v2 = getPreviousValorizedCellValue_v2(cell)
        Else
            getPreviousValorizedCellValue_v2 = ""
        End If
    Else
        getPreviousValorizedCellValue_v2 = cell.Value
    End If

End Function

答案 1 :(得分:0)

请尝试以下代码。

Function Foo(iRange As Range)

For i = iRange.Row To 1 Step -1
    If Trim(Range("A" & i).Value) <> "" Then
        Foo = Range("A" & i).Value 'Put the code you want here
        Exit Function
    End If
Next i

End Function