接受VBA和非VBA答案。
问题
我正在尝试使用ThisWorkbook.SaveAs Filename:=strFilePath, FileFormat:=xlCSV
将工作表另存为.csv,但是由于UsedRange
包含尾随的空白行,因此在.csv中出现了多余的逗号行。
我之前在《守则》中所做的工作
rngAllDate.SpecialCells(xlCellTypeVisible).Copy ThisWorkbook.Worksheets(1).Cells(1, 1)
如果您尝试重新创建问题,这可能会有所帮助。
我尝试过的事情
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结果:
我希望上述代码块产生以下Msgbox结果:
我还能尝试什么?
答案 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行。