excel UsedRange.计数计数错误

busg9geu  于 2022-12-20  发布在  其他
关注(0)|答案(5)|浏览(181)

**总结:**我从一个工作表中取出一行数据并将其粘贴到另一个工作表中,但是工作表将是日常使用的工作表,新数据只是输入到旧数据下面。
**问题:**每次新运行时,UsedRange.Count中始终添加7。例如:在一次运行中,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

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

tzxcd3kk

tzxcd3kk1#

变更:usedRows = Sheets("EFT").UsedRange.Count
收件人:usedRows = Sheets("EFT").Range("A" & Sheets("EFT").Rows.Count).End(xlUp).Row
其中,“A”可以更改为要计算列总数的任意行。
使用UsedRange有一个危险,因为它会考虑到这样的事情和格式化的单元格没有数据和其他事情,可能会给予你意想不到的结果,比如如果你希望你的数据开始在范围(“A1”),但它实际上开始在另一个范围!
但是,如果您真的希望使用UsedRange,那么上面的代码在获取行时仍然是错误的。请使用UsedRange.Rows.Count,或者使用UsedRange.SpecialCells(xlCellTypeLastCell).Row获取UsedRange的最后一个绝对单元格

sc4hvdpw

sc4hvdpw2#

这两行字很有魔力

usedCol = ThisWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
  usedRow = ThisWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

有关详细信息,请访问Microsoft网站
http://msdn.microsoft.com/en-us/library/office/ff196157.aspx

voj3qocg

voj3qocg3#

谢谢你的讨论...
如果单元格A1中有内容,.UsedRange.Rows.Count.UsedRange.Columns.Count可以正常工作。否则需要使用SpecialCells解决方案。
希望这是有帮助的。

rjee0c15

rjee0c154#

“UsedRange”可以这样使用〉〉

x := Sheet.UsedRange.Row + Sheet.UsedRange.Rows.Count - 1;
y := Sheet.UsedRange.Column + Sheet.UsedRange.Columns.Count - 1;

SpecialCells的问题是您无法在受保护的工作表上使用它。

i7uq4tfw

i7uq4tfw5#

假设您有连续的工作表(即没有空白单元格),并且工作表从A1开始,那么我发现

Range("A1").CurrentRegion.Rows.Count

给出了最可靠的结果。

相关问题