使用格式检测空行和列

时间:2015-09-24 03:32:08

标签: excel vbscript automation

我正在尝试使用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"

只要最后没有空行和列,此脚本就可以正常工作。此脚本失败的地方:

enter image description here

我在Excel工作表上执行了Ctrl + Shift + End,它给了我一些额外的行和一列格式化但不包含数据的列。我无法编写代码来检测这些额外的单元格。

注意:当我检查变量UsedColumns的值时,它返回6和UsedRows为4。因此,代码不会解析格式化但不包含数据的最后一个空行和列,因此我的代码失败。

1 个答案:

答案 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))展开的数据的“孤岛”,在所有方向上展开,直到它遇到完全空白的行或列。