gpt4 book ai didi

excel - 创建范围时 xlCellTypeVisible 不起作用

转载 作者:行者123 更新时间:2023-12-04 21:19:52 25 4
gpt4 key购买 nike

我正在尝试在 Excel 2010 中为仅可见的行创建一个使用 VBA 的范围。我已经过滤掉了我不想要的值,我正在使用关键字 xlCelltypeVisible ,但是,当我对其进行测试时,该范围仍显示该范围内应隐藏的字段。

我尝试了几种不同的创建范围的变体,但似乎没有任何效果。似乎 xlCellTypevisible不管用。

这不是我正在使用的实际工作表,但出于演示目的,这总结了我的问题所在:

Sub create_range()

ActiveSheet.Range("$A$3:$C$8").AutoFilter Field:=3, Criteria1:="North"
Set a = Range("A3", Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)

MsgBox (a(3))



End Sub

在这种情况下,我有三列,A3 = “Opt A”,B3 = “Opt B”,C3 = “Opt C”。

在选项 A 字段下,我有 A、B、C、D、E
在选项 B 字段下,我有 1、2、3、4、5
在字段 Opt C 我有北,东,西,南,北

正如您在上面的代码中看到的那样,我已经在 Opt C 的字段中过滤了“North”的值。结果在 A 列中,我看到了“Opt A”、“A”、“E”。

我的期望是,当我创建一个范围时,我可以选择这些选项,并且只能选择这些选项。但这不起作用。如果选择 a(1),我正确地将“Opt A”视为 A3,这是我所期望的。但是当我选择第三个并且应该是 a(3) 范围内的最终值时,我看到的是“B”而不是“E”。

Before filter

After filter

最佳答案

此问题是由 Excel 处理两件事的方式引起的:定义范围之外的单元格和非连续范围

对于第一个:如果我定义 rng = Range("A1:B2") ,然后调用MsgBox rng.Cells(3,3).Address ,它会给我“C3” - 即使那不是范围的一部分。 Excel 自动查找范围之外

对于第二个:在您的示例中,MsgBox a.Address将给出 "A3:A4,A8"- 范围为 2 areas ( A3:A4A8 )。当您尝试引用它时 没有 指定一个区域,它默认为第一个区域 (A3:A4) - 然后,根据第一个点,扩展范围以找到一个值。

这是一个粗略的函数,用于返回非连续列中的第 n 个单元格:

Function NthCellInColumn(ByRef Target As Range, ByRef Cell As Long) As Range
Dim DiscardedCells As Long, WhichArea As Long

DiscardedCells = 0
For WhichArea = 1 To Target.Areas.Count
'Is the cell in this area?
If Cell <= DiscardedCells + Target.Areas(WhichArea).Cells.Count Then
'Yes, so let's find it
Set NthCellInColumn = Target.Areas(WhichArea).Cells(Cell - DiscardedCells, 1)
Exit For 'Stop looping through areas
Else
'No, so Discard the Cells
DiscardedCells = DiscardedCells + Target.Areas(WhichArea).Cells.Count
End If
Next WhichArea
End Function

像这样使用它: MsgBox NthCellInColumn(a,3).Value

关于excel - 创建范围时 xlCellTypeVisible 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55537962/

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