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 在评论中回答。
这是我第一次在这里提问。
我 运行 在工作中遇到一个问题,我需要将某些行从一个工作簿复制到另一个工作簿。我相信我可能已经解决了复制部分,但我的问题是一些非常简单的事情。
要确定要复制的行,我必须查看第一个工作簿中的 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 在评论中回答。