2

在下面的代码中,我试图检查单元格 R23 是否包含任何数据,如果是:

执行动作

如果不

执行其他操作。

问题是单元格是空的,但包含一个可能返回值或不返回值的公式。因此,我为什么要检查值。问题是我的代码正在查看单元格中的公式,并且由于某种原因认为是一个字符串。如果我删除公式,那么我的代码将按计划执行。

我想不出我在这里做错了什么?

Option Explicit On
Option Strict On  

Private Sub radMoveToRowQ23EE_MouseHover(sender As Object, e As EventArgs) Handles radMoveToRowQ23EE.MouseHover



Dim eeName As String
    Dim WB As Excel.Workbook
    Dim WS as Excel.Worksheet
    WB = CType(Globals.ThisWorkbook.Application.ActiveWorkbook, Excel.Workbook)
    WS = CType(WB.Worksheets("positionBoard"), Excel.Worksheet)
    eeName = CStr(WS.Range("R23").Value)

    If eeName Is Nothing Then

        Me.tipSelectEmploye.SetToolTip(Me.radMoveToRowQ23EE, "No employee details to display")

    Else

        Me.tipSelectEmploye.SetToolTip(Me.radMoveToRowQ23EE, "Display details for employee: " & eeName)


    End If

End Sub
4

2 回答 2

2

在 VBA 中,这是依靠函数来完成的IsEmpty。因此在 VB.NET String.IsNullOrEmpty中是最好的等价物:

If (String.IsNullOrEmpty(eeName)) Then
    Me.tipSelectEmploye.SetToolTip(Me.radMoveToRowQ23EE, "No employee details to display")
Else
    Me.tipSelectEmploye.SetToolTip(Me.radMoveToRowQ23EE, "Display details for employee: " & eeName)
End If
于 2013-07-07T08:22:33.863 回答
1

你有没有尝试过

If eeName = "" Then?

或者,尝试将 eeName 更改为 Excel.Range 而不是字符串,将其设置为等于您的范围,然后尝试

If eeName.value = "" Then

您可能还想查看 .text 而不是 .value。虽然,.value 是 Excel 范围的默认属性。抱歉,我不能再有结论了,但是这些方法在我的经验中是有效的。

于 2013-07-07T18:55:32.450 回答