我正在尝试使用VBScript检查Excel工作表中的任何空单元格。我编写了以下简单代码来检测该电子表格中的行数和列数,然后查找它是否为空:
Set excelWorkbook = CreateObject("Excel.application")
excelWorkbook.Application.WorkBooks.Open("My_Excel_Sheet_Name")
excelWorkbook.Application.Visible = True
WScript.Sleep 2000
Set excelSheet = excelWorkbook.Worksheets("Sheet1")
UsedColumns = excelSheet.UsedRange.Columns.Count
UsedRows = excelSheet.UsedRange.Rows.Count
For columnVariable = 1 to UsedColumns
For rowVariable = 1 to UsedRows
if IsEmpty(excelSheet.Cells(rowVariable,ColumnVariable)) Then
msgbox "Empty cell found at row: " + rowVariable + " column: " + ColumnVariable
else
msgbox "Data Found in this cell"
End if
Next
Next
Msgbox "Script completed, check logs for more details"
只要最后没有空行和列,此脚本就可以正常工作。此脚本失败的地方:
我在Excel工作表上执行了Ctrl + Shift + End,它给了我一些额外的行和一列格式化但不包含数据的列。我无法编写代码来检测这些额外的单元格。
注意:当我检查变量UsedColumns的值时,它返回6
和UsedRows为4
。因此,代码不会解析格式化但不包含数据的最后一个空行和列,因此我的代码失败。
答案 0 :(得分:1)
放弃Worksheet.UsedRange property赞成Range.CurrentRegion property。
UsedColumns = excelSheet.Cells(1, 1).CurrentRegion.Columns.Count
UsedRows = excelSheet.Cells(1, 1).CurrentRegion.Rows.Count
.CurrentRegion
是从参考单元(在这种情况下为.Cells(1, 1)
)展开的数据的“孤岛”,在所有方向上展开,直到它遇到完全空白的行或列。