Vba 检查字符串是否为空不会';行不通

Vba 检查字符串是否为空不会';行不通,vba,excel,Vba,Excel,我在access中有一个vba代码,它从excel页面获取数据,并使用access窗体中的按钮通过变量在excel中传输数据。如果请求的某些数据不在excel文件中,我希望它显示一个msgbox,显示哪些数据未传输。为此,我使用了布尔变量,并用“IF”检查包含excel存储数据的变量是否为空 Var1IF = True Var1 = Sheet1.Cells(95, 80).Value If Var1 = "" Then Var1IF = False End If 无论我做什么,Var

我在access中有一个vba代码,它从excel页面获取数据,并使用access窗体中的按钮通过变量在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是一个字符串)

我甚至做了相反的事情,结果还是错了:

Var1IF = True
    Var1 = Sheet1.Cells(95, 80).Value
    If Var1 <> "" Then
        Var1IF = False
    End If
你不应该先打开工作簿吗?你确定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
Var1=Sheet1.单元格(95,80).值
调试。打印“值:”
如果Var1=“”,则
调试。打印“Var1为空字符串”
如果结束
如果Var1“,则
调试。打印“Var1不是空字符串”
如果结束

并检查即时窗口。如果您同时获得两条“Var1”调试行,我会感到非常惊讶。

这太荒谬了。从excel获取数据后,我将数据从Var1保存到另一个变量,问题自行解决。我检查了大约10次,它确实有效,而前一种方法没有

var1
不是一个空字符串;
debug.print Sheet1.Cells(95,80).Value,len(Sheet1.Cells(95,80).Value)
显示什么?(ctrl+g以查看输出)它打印该单元格的值。我知道var1不是一个空字符串。既然IF条件没有通过,为什么Var1IF返回False?出于某种原因,在我的代码中,Var1=“”和Var1”总是正确的。我感觉我们没有看到全部情况。请将变量声明添加到代码中(Var1、Sheet1是什么数据类型?)Sheet1与此工作簿不同。sheets(1)。后者是恰当的参照。还要知道,sheet1与vbe资源管理器有关,而不是与工作簿中的工作表有关。在“简单”工作簿中正好是一样的。至于你的第一个问题,为了让按钮工作,你必须让urself打开excel文件(因为它不是一个特定的excel文件,由用户决定哪一个)。其次,正如我回答了自己的问题一样,我通过将Var1中的数据保存到另一个变量来解决了这个问题,出于某种荒谬的原因,它起了作用。@PanagiotisGianniotis:嗯,好的。我想这个问题应该被关闭,因为它是不可复制的。
Set Sheet1 = oXLApp.Sheets("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