vba - UsedRange.Count 计数错误

标签 vba excel

摘要:我从一张表中取出一行数据并将其粘贴到另一张表中,但是该表将是一种日常使用的东西,新数据只是在旧数据下方输入。

问题:在每次新运行时,都会将 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

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

最佳答案

更改: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

关于vba - UsedRange.Count 计数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886284/

相关文章:

查找包含单元格的一组区域的算法

excel - 将单元格中的值拆分为列和行

excel - 在excel中对表格中的行进行排序

java - JXL 命名面积公式显示不正确的值

vba - 使用 VBA 在 Excel 中整理数据

vba - Excel VBA If语句错误触发

单元格引用中的 VBA 变量

vba - 如何在vba中比较时间

vba - 确定多个单元格的 Excel VBA 代码范围

vba - ActiveX 控件命令按钮代码名称的虚假更改