gpt4 book ai didi

VBA:UsedRange 未正确更新

转载 作者:行者123 更新时间:2023-12-02 18:11:46 25 4
gpt4 key购买 nike

每次使用UsedRange时,我都会遇到问题。我的代码中有这个:

Sheets("Campaign").UsedRange 'Refresh UsedRange
LastRow = Sheets("Campaign").UsedRange.Rows.Count

这是为了检查特定工作表中使用的最后一行。现在,当您第一次运行它时,它可以工作并输出正确的整数,但如果您从行数最多的列中删除行,则不会更新。问题是,如果您向该特定列添加更多行,它会更新。

这是我的实际代码:

Sub CMPGN_MCRO()

Sheets("Campaign").UsedRange 'Refresh UsedRange.
LastRow = Sheets("Campaign").UsedRange.Rows.Count

Dim RangeString As String
Worksheets("Campaign").Select
Range("A1:A" & LastRow).Select
RangeString = Selection.Address

Range("A1").End(xlToRight).Select
RangeString = RangeString & ":" & Selection.Address 'Selects all the data in Campaign Worksheet.

Dim C As Range
i = 2
For Each C In Worksheets("Campaign").Range(RangeString).Cells
If Mid(C.Value, 6, 2) = "AC" Then
Worksheets("Sheet3").Range("A" & i) = C.Value 'Echo out all the filtered data and output it to another worksheet.
i = i + 1
End If
Next
MsgBox (LastRow)
End Sub

PS:我使用MsgBox 来回显usedRange 生成的整数。

最佳答案

尝试将UsedRange命令与此结合起来:

ActiveCell.SpecialCells(xlCellTypeLastCell).Row

代码 SpecialCells(xlCellTypeLastCell) 引用工作表上最后使用的单元格。在 Excel 中,类似的命令是 {Ctrl End}。

在您的代码中:

Sheets("Campaign").UsedRange 'Refresh UsedRange
LastRow = Sheets("Campaign").Range("A1").SpecialCells(xlCellTypeLastCell).Row

需要注意的是,有时仅删除数据(Del 键)是不够的。尝试实际删除单元格({Ctrl -} 或{右键单击删除})。

另一个有效的代码,除非您的工作表已填充到最后一行:

LastRow = cells(Sheets("Campaign").Range("A1").SpecialCells(xlCellTypeLastCell).Row,1).offset(1,0).end(xlUp).row

它的作用:找到单元格 A1 中的最后一个单元格,然后向下移动一个单元格以确保我们位于空单元格中,然后使用 ctrl-up 找到填充数据的最后一个单元格。有点乱,但是有效,即使 A 列中有一些未正确删除的单元格。

关于VBA:UsedRange 未正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30524093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com