UsedRange-无法消除尾随的空白行

时间:2019-03-27 18:40:03

标签: excel vba

接受VBA和非VBA答案。

问题

我正在尝试使用ThisWorkbook.SaveAs Filename:=strFilePath, FileFormat:=xlCSV将工作表另存为.csv,但是由于UsedRange包含尾随的空白行,因此在.csv中出现了多余的逗号行。

我之前在《守则》中所做的工作

rngAllDate.SpecialCells(xlCellTypeVisible).Copy ThisWorkbook.Worksheets(1).Cells(1, 1)

如果您尝试重新创建问题,这可能会有所帮助。

我尝试过的事情

  • 删除数据下的所有行
  • 使用橡皮擦工具清除我数据下所有行的所有内容
  • 清除整个工作表中的格式(包括数据),以防边界造成问题
  • 使用以下VBA代码块:

With ThisWorkbook.Worksheets(1)
    .UsedRange 'I'm told this recomputes the UsedRange
    MsgBox .UsedRange.Address

    Dim rngColumnsToDeleteAndClear As Range
    Set rngColumnsToDeleteAndClear = .Range(.Cells(1, WorksheetFunction.CountA(.Rows(1)) + 1), .Cells(1, .Columns.Count))
    MsgBox rngColumnsToDeleteAndClear.Address
    rngColumnsToDeleteAndClear.EntireColumn.Clear
    rngColumnsToDeleteAndClear.EntireColumn.Delete

    Dim rngRowsToDeleteAndClear As Range
    Set rngRowsToDeleteAndClear = .Range(.Cells(WorksheetFunction.CountA(.Columns(1)) + 1, 1), .Cells(.Rows.Count, 1))
    MsgBox rngRowsToDeleteAndClear.Address
    rngRowsToDeleteAndClear.EntireRow.Clear
    rngRowsToDeleteAndClear.EntireRow.Delete

    .UsedRange
    MsgBox .UsedRange.Address
End With

我从上述代码块中获得了以下Msgbox结果:

  1. $ A $ 1:$ N $ 11
  2. $ O $ 1:$ XFD $ 1
  3. $ A $ 11:$ A $ 1048576
  4. $ A $ 1:$ N $ 11

我希望上述代码块产生以下Msgbox结果:

  1. $ A $ 1:$ N $ 11
  2. $ O $ 1:$ XFD $ 1
  3. $ A $ 11:$ A $ 1048576
  4. $ A $ 1:$ N $ 10

我还能尝试什么?

3 个答案:

答案 0 :(得分:0)

我最近在电子表格上遇到了UsedRange的问题,我无法删除/清除单元格并让UsedRange重置。我发现的解决方法是选择所有未使用的行/列,更改它们的大小,现在删除单元格,保存电子表格,并重新设置UsedRange。...也许这对您有帮助?

答案 1 :(得分:0)

尝试运行此命令,以查看在计算使用范围之前,第11行是否存在任何隐藏的中断

Sub IterateCharacters()
    For Each cell In Sheets("Sheet1").Range(Cells(11, 1), Cells(11, 14))
        With cell
            For n = 1 To Len(.Value)
                Debug.Print Asc(Mid(.Value, n, 1))
            Next n
        End With
    Next
End Sub

此外,在获得不正确的使用范围后,请尝试下面的行,然后再次测试使用范围。

ActiveSheet.Range(Cells(11, 1), Cells(11, 14)).Replace "*", vbNullString

答案 2 :(得分:0)

由于某种原因,实际数据范围的格式导致UsedRange在末尾包含空白行。作为记录,我在数据范围周围使用了粗框边框。

也从数据范围中清除了格式之后,似乎像我在上面测试过的那样,空白行仍包含在UsedRange中,因为当我按Ctrl-Shift-End时,突出显示的区域仍包含空白行。但是,VBA显示实际的UsedRange实际上已经从第11行缩小到了第10行。