UsedRange.Count计数错误

Mik*_*ogg 6 excel vba excel-vba

简介:我从一张纸上取一行数据并将其粘贴到另一张纸上,但是这张纸只是日常使用的东西,只需在旧数据下面输入新数据.

问题:在每次新的运行中,7都会一直添加到UsedRange.Count.例如:一次运行UsedRange.Count将是7; 下次我运行该函数时,计数将为14.

我在寻找:为什么会这样,有没有办法帮助UsedRange更准确

- 为了参考,我已经包含了整个函数.

Function eftGrabber()

        Dim usedRows As Integer
        Dim i As Integer

        ChDir "\\..."       

        Workbooks.Open Filename:= _
        "\\...\eftGrabber.xlsm"

        usedRows = Sheets("EFT").UsedRange.Count

        Windows("Data").Activate

        Sheets("DataSheet").Range("A11").EntireRow.Copy

        Windows("eftGrabber").Activate

        Sheets("EFT").Range("A" & usedRows + 1).Select

        ActiveSheet.Paste

        i = usedRows

        Do                            'THIS LOOP DELETES BLANKS AFTER POSTING NEW LINES

            Range("A" & i).Select

            If Range("A" & i) = "" Then

                ActiveCell.EntireRow.Delete

            End If

              i = i - 1

        Loop Until i = 1

        Windows("eftGrabber").Activate

        ActiveWorkbook.Save

  Windows("eftGrabber").Close

End Function
Run Code Online (Sandbox Code Playgroud)

如果我遗漏了任何重要细节,请告诉我.提前致谢!

Sco*_*man 12

更改: usedRows = Sheets("EFT").UsedRange.Count

至: usedRows = Sheets("EFT").Range("A" & Sheets("EFT").Rows.Count).End(xlUp).Row

其中"A"可以更改为您希望计算总列数的行.

使用中存在危险,UsedRange因为它会影响这些事物并且格式化的单元格没有数据和其他可能会给您带来意想不到的结果,例如,如果您希望数据在Range("A1")中启动,但它确实从另一个范围!

但是,我会说,如果你真的想使用UsedRange,你上面的代码仍然是错误的获取行.使用它代替UsedRange.Rows.Count或使用UsedRange的最后一个绝对单元格UsedRange.SpecialCells(xlCellTypeLastCell).Row


Har*_*Das 5

这两条线做魔术

  usedCol = ThisWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
  usedRow = ThisWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问Microsoft网站。

http://msdn.microsoft.com/zh-CN/library/office/ff196157.aspx