gpt4 book ai didi

vba - 从 VBA 中的并集生成的行范围中删除行

转载 作者:行者123 更新时间:2023-12-03 02:35:30 29 4
gpt4 key购买 nike

这看起来执行起来应该很简单,但我一生都找不到合适的命令或技巧。

在我的宏中,我在循环中使用范围和新行之间的并集系统地生成行范围:

Set DesiredRange = Union(DesiredRange, ActiveSheet.Cells(Val(ParsedText(Count)), 1).EntireRow)

但是,为了使该联合正常工作,我必须首先将 DesiredRange 设置为等于某个范围,以便联合不会出错。

我遇到的麻烦是,我需要排除某些行号,但是这些行是从用户表单文本框中选择的,该文本框允许用户输入他们想要的任何内容(我已经在错误控制中进行了编码,以便传递的值是有效的),因此他们可以假设将第一个值(以及我用来初始化范围的值)设为排除行。

我希望这里有人可以找到一个解决方案,允许我完成所有操作,然后从范围中删除第一个添加的行(如果它位于排除类别内)(第 1 行到第 7 行)。如果没有,我想我可能有一个解决方法(但我问这个问题更多的是为了教育而不是解决问题)

谢谢!

最佳答案

我认为您需要像 Range.Except 这样的函数来补充 Range.IntersectRange.Union 但据我所知没有这样的函数内置于 VBA 中,您必须自己编写代码。类似下面的内容将执行您想要的操作,并自动从 Union 中排除不需要的行。变量 strRowsToExclude 可能会从表单传递给该方法:

Sub Test()

Dim rngTarget As Range
Dim strRowsToExclude As String
Dim varRowsToExclude As Variant
Dim intCounter1 As Integer
Dim intCounter2 As Integer
Dim blnDoNotAdd As Boolean

Set rngTarget = Nothing
strRowsToExclude = "1,4,45,87,88,99"
varRowsToExclude = Split(strRowsToExclude, ",")

For intCounter1 = 1 To 100
blnDoNotAdd = False
For intCounter2 = 0 To UBound(varRowsToExclude)
If intCounter1 = Val(varRowsToExclude(intCounter2)) Then
blnDoNotAdd = True
End If
Next intCounter2
If blnDoNotAdd = False Then
If rngTarget Is Nothing Then
Set rngTarget = Sheet1.Cells(intCounter1, 1).EntireRow
Else
Set rngTarget = Union(rngTarget, Sheet1.Cells(intCounter1, 1).EntireRow)
End If
End If
Next intCounter1

rngTarget.Select

End Sub

关于vba - 从 VBA 中的并集生成的行范围中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594979/

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