在复制行之前,Access-VBA检查打开的Excel工作簿中的单元格是否为空

时间:2017-06-06 14:38:42

标签: excel vba null access-vba is-empty

这是我第一次在这里提问。

我遇到了一个问题,我需要将某些行从一个工作簿复制到另一个工作簿。复制部分我相信我可能已经解决但我的问题是非常简单的事情。

要确定要复制哪些行,我必须查看第一个工作簿中的4个日期,使用它们进行检查我遇到的问题是检查单元格是否为空。每次运行代码时,检查都会出现不匹配错误13。

    Dim XX As Excel.Application    ----secondary workbook
    Dim ws1 As Object
    Dim ws As Object

    Set XX = New Excel.Application
    XX.DisplayAlerts = False

    Set ws1 = XX.Workbooks.Add
    ws1.Activate
    Set ws = ws1.ActiveSheet

    Set xl = New Excel.Application   ----primary workbook
    xl.DisplayAlerts = False

    Set wb = xl.Workbooks.Open(FilePath)

For i = 2 To wb.Sheets("SHEET1").Range("Q65536").End(xlUp).Row  --- i have the code looping through all rows of the primary workbook

        Date1 = wb.Sheets("SHEET1").Cells(i, 12).Text
        Date2= wb.Sheets("SHEET1").Cells(i, 14).Text
        Date3= wb.Sheets("SHEET1").Cells(i, 13)
        Date4 = wb.Sheets("SHEET1").Cells(i, 15)    -----  everything up to here has no errors

        If ((CDate(Date1) < Date) & (IsEmpty(Date3))) Then ---- error is always here, at Date3

            wb.Rows(i).Copy ws.Rows(ws.Cells(ws.Rows.Count, 2).End(xlUp).Row + 1)

        end if

wb是我从(希望)获取数据的主要工作簿,而ws是我正在复制的工作簿。

我知道错误是在if语句中的空检查时,因为我已经取出它并且只留下了少于检查和代码按预期进展。我只是无法弄清楚如何解决它。

我已经为字符串,整数,日期和变体声明了所有内容的日期变量。并尝试使用.text或.value或任何内容将单元格值作为范围和单元格导入。然后在if语句中我尝试了Iscmp,Isnull,=&#34;&#34;,= 0,= null,在CDate中添加。我完全按照我能想到的每种可能的组合尝试了所有的东西。

2 个答案:

答案 0 :(得分:0)

你可以尝试:

 Date3 = trim(wb.Sheets("SHEET1").Cells(i, 13))
 ....IsNull(Date3)

这里的想法是首先修剪空格,然后检查空值。

希望这会有所帮助:)

答案 1 :(得分:0)

Brain M Stafford在评论中回答道。