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

Access-VBA check if a cell in an opened excel workbook is empty before copying the row

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

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

要确定要复制的行,我必须查看第一个工作簿中的 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 语句中我尝试了 IsEmpty, Isnull, = "", = 0, = null, added in CDate.我真的已经尝试了所有我能想到的可能的组合。

你可以试试:

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

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

希望对您有所帮助:)

Brain M Stafford 在评论中回答。