首页 > 解决方案 > 从 Excel 调用 VBA 函数,“查找”故障?

问题描述

如果我从子“测试”中调用“ValOzone”函数,“查找”工作正常并找到经度和纬度值,但如果我从 Excel 的单元格 E8 调用它“查找”找不到任何东西。我究竟做错了什么?

(Exel工作表名称为“2020-01-01”)

Excel 工作表的图像

Private Sub test()
    Dim Value As Double
    Value= ValOzono("01/01/2020", -179.5, -89.5)
End Sub


Public Function ValOzone(ByVal Day As String, ByVal Longitude As Double, ByVal Latitude As Double) As Variant
    Dim SDay As String
    Dim SMonth As String
    Dim SYear As String
    SDay = Mid(Day, 1, 2)
    SMonth = Mid(Day, 4, 2)
    SYear = Mid(Day, 7, 4)
    Day = SYear & "-" & SMonth & "-" & SDay
    
    Dim CRow As Range
    Dim CColumn As Range
    With ThisWorkbook.Sheets(Day).Rows(1)
        Set CColumn = .Find(What:=Longitude, _
                                LookIn:=xlValues, _
                              SearchDirection:=xlNext, _
                              MatchCase:=False, _
                              LookAt:=xlWhole, _
                              SearchOrder:=xlByColumns)
    End With
    With ThisWorkbook.Sheets(Day).Columns(1)
        Set CRow = .Find(What:=Latitude, _
                                LookIn:=xlValues, _
                              SearchDirection:=xlNext, _
                              MatchCase:=False, _
                              LookAt:=xlWhole, _
                              SearchOrder:=xlByRows)
    End With
    
    If Not CColumn Is Nothing And Not CRow Is Nothing Then
        ValOzone = ThisWorkbook.Sheets(Day).Cells(CRow.Row, CColumn.Column)
    Else
        ValOzone = "Null"
    End If

End Function

标签: excelvba

解决方案


推荐阅读