Private Function GetPositionIndex(ByVal PositionID As String) As Long
    Dim CurrPosition
    CurrPosition = ""
        Call ofs2.GetText(2, 1, CurrPosition)
        If CurrPosition = PositionID Then '当条件相等的时候也不会执行返回语句
            GetPositionIndex = 1
            Exit Function
        End If
    GetPositionIndex = -1
End Function我调试的时候,明明看到 CurrPosition 和 PositionID是完全相等的值,程序就是不执行IF里面的代码。
需要说明的是:ofs2.GetText(2, 1, CurrPosition)中的参数都是传址的,CurrPosition 的类型是变体(Variant)
请高人指点,先谢过`~~

解决方案 »

  1.   

    我发问题了,其实 CurrPosition = PositionID真是不相等的。
    表面看一样,但实际长度不一样,我正在查找原因,呵呵~~
      

  2.   

    Private Function GetPositionIndex(ByVal PositionID As String) As Long 
        Dim CurrPosition As String
        CurrPosition = "" 
            Call ofs2.GetText(2, 1, CurrPosition) 
            If Left(CurrPosition, Len(PositionID)) = PositionID Then '当条件相等的时候也不会执行返回语句 
                GetPositionIndex = 1 
            Else 
              GetPositionIndex = -1 
            End If 
    End Function 
      

  3.   

    Private Function GetPositionIndex(ByVal PositionID As String) As Long 
        Dim CurrPosition 
        CurrPosition = "" 
            Call ofs2.GetText(2, 1, CurrPosition) 
            If CurrPosition = val(PositionID) Then '当条件相等的时候也不会执行返回语句 
                GetPositionIndex = 1 
                Exit Function 
            End If 
        GetPositionIndex = -1 
    End Function 
      

  4.   

    Call ofs2.GetText(2, 1, CurrPosition)
    这个函数应该少用了trim()
    if trim(CurrPosition) = trim(PositionID) then
    debug.print "原来是空格.."
    end if
      

  5.   

    用Msgbox CurrPosition = PositionID 就可以检验两者是否相等
    还可以检验数据类型等