gpt4 book ai didi

vba - 使用 ActiveCell.Offset() 选择一个范围,避免隐藏单元格

转载 作者:行者123 更新时间:2023-12-02 02:39:36 24 4
gpt4 key购买 nike

我正在运行一个宏,它要求提供工作表名称和引用单元格,然后选择围绕我们选择的单元格的一系列单元格。对我的数据应用过滤器后,某些行变得隐藏,因为不需要它们。问题是,宏没有考虑到这一点并且也计算隐藏行。这是我在宏的原始版本中使用的代码:

.....应用一些输入框并搜索用户的值后,执行以下行:

Range(ActiveCell.Offset(90, 0), ActiveCell.Offset(-252, 2)).Select
Selection.Copy

通过这种方式,隐藏的行将包含在选择中。我尝试了以下修改

Range(ActiveCell.Offset(90, 0), ActiveCell.Offset(-252, 2)).SpecialCells(xlCellTypeVisible).Select
Selection.Copy

但是没有成功。

我想知道,任何人都可以建议一种将 ActiveCell.OffsetSpecialCells(xlCellTypeVisible) 结合使用的方法,从而实现上述宏的功能 - 即选择一系列单元格以避免过滤后隐藏的行?

最佳答案

要从一系列选定单元格中仅选择可见单元格,您可以使用以下代码行:

Selection.SpecialCells(xlCellTypeVisible).Select

就像这个例子:

Range(ActiveCell.Offset(90, 0), ActiveCell.Offset(-252, 2)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy

下面的代码是有关如何计算行数的示例。但是有一个问题你必须考虑。

如果将所选内容粘贴到原始工作表,则复制所选内容的区域中可能存在隐藏行。如果是这样,您复制的文本也将被隐藏。

因此,您必须将数据复制到新工作表以避免该问题,或者必须将数据复制到工作表 1 的底部。

Option Explicit
'Define a Constant for the Amount of Rows you Need
Private Const ConstAmountRows As Integer = 40
Sub Test()
Dim intCountedRows As Integer
Dim idx As Integer
Dim intDifference As Integer

idx = 0
Do
If Not (intCountedRows = ConstAmountRows) Then
intCountedRows = ConstAmountRows
idx = idx + 1
End If
Sheets("Sheet1").Select
'Select the Range with the Amount of Rows you need ideally
Range("A1:A" & intCountedRows + idx).Select

'Select only the Visible Cells
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy

Sheets("Sheet2").Select 'Select another Sheet
'***-> Her you can select the Place you want to Paste the Text<-***
Range("B1").Select
ActiveSheet.Paste

'*** Count the Rows that you Paste
intCountedRows = Selection.Rows.Count
'if the Counted Rows are not equal to the Amount. Repeat
Loop While Not (intCountedRows >= ConstAmountRows)
End Sub

关于vba - 使用 ActiveCell.Offset() 选择一个范围,避免隐藏单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519040/

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