检查字符串是否为空不起作用

时间:2016-02-23 11:12:43

标签: vba excel-vba excel

我在访问中有一个vba代码,它从excel页面获取数据,并使用访问表单中的按钮通过变量将其传输到excel中。如果请求的某些数据不在excel文件中,我希望它显示一个msgbox,显示哪些数据未被传输。要做到这一点,我使用布尔变量和“IF”我检查带有excel存储数据的变量是否为空。

Var1IF = True
Var1 = Sheet1.Cells(95, 80).Value
If Var1 = "" Then
    Var1IF = False
End If

无论我做什么,Var1IF总是返回False。即使Var1中包含数据(因为excel中的单元格可能同时包含数字和字母,因此Var1是一个字符串)。

我甚至做了相反的事情,它再次返回False:

Var1IF = True
    Var1 = Sheet1.Cells(95, 80).Value
    If Var1 <> "" Then
        Var1IF = False
    End If

编辑:声明:

Dim oXLApp As Object, wb As Object
Dim Sheet1 As Object
Dim Var1 as String
Dim Var1IF as Boolean

Set oXLApp = GetObject(, "Excel.Application")
Set Sheet1 = oXLApp.Sheets("Sheet1")

2 个答案:

答案 0 :(得分:0)

Set Sheet1 = oXLApp.Sheets("Sheet1")

你不应该先打开工作簿吗?你确定Sheet1实际上是指什么吗?

无论如何,请尝试以下代码:

Var1 = Sheet1.Cells(95, 80).Value
Debug.Print "Value: <" & Var1 & ">"
If Var1 = "" Then
    Debug.Print "Var1 is empty string"
End If
If Var1 <> "" Then
    Debug.Print "Var1 is NOT empty string"
End If

并检查立即窗口。如果你得到两个&#34; Var1&#34;我会很惊讶调试行。

答案 1 :(得分:0)

这太荒谬了。从excel获取后,我将数据从Var1保存到另一个变量,问题解决了。我检查了大约10次,它只是做了工作,而以前的方式没有。