尝试循环区域中的非连续行

  • 本文关键字:连续 循环 区域 vba excel
  • 更新时间 :
  • 英文 :


我正在尝试编写一些东西,它将循环访问表中的一系列不连续行,并更改每行中的列数据......例如,清除内容。范围将是动态的,我要循环遍历的行都将是"已选择的"。

我尝试了以下内容,但它在第一行后停止了。我很确定问题是下一行与第一行不连续:

 For Each b In a.Rows
 mainTasks.DataBodyRange(Range("mainTasks[Status]").Column).ClearContents
 Next b

然后我有一个好主意,写一些只适用于"选定"列单元格的东西。我尝试使用If ... .Value = Selected但没有用。

我是否正在尝试执行 Excel 2016 VBA 无法执行的操作?也就是说,循环遍历范围内的非连续行?我一直在研究并尝试了其他一些不起作用的事情。你能告诉我我是不是走错了兔子洞?

循环中没有任何变量。

它只会在循环中重复清除一列。您需要以某种方式在循环中引用 b,以便在每个循环中获得不同的结果。

出于测试目的,我试图在注释中简化您的代码,但以下代码应该会有所帮助,

Dim x As Integer
Dim myrange As Range
For x = 1 To 30
   If (mainTasks.Cells(x, 2) = "completed" Or mainTasks.Cells(x, 2) = "Dismissed") And mainTasks.Cells(x, 3) <> "" Then
      If myrange Is Nothing Then
         Set myrange = mainTasks.Cells(x, 2)
      Else
         Set myrange = Union(myrange, mainTasks.Cells(x, 2))
      End If
    End If
Next x
myrange.ClearContents

我试过了,考虑到我的设置方式,它可以正常工作。 希望对您有所帮助!

还必须添加代码来复制数据,鉴于这是您最初的问题,我正在清除其中的内容

这也

行得通(我认为)

Dim selectedRange As Range
Set selectedRange = Application.Selection
For Each Row In selectedRange.Rows
    Debug.Print Row.Address
Next Row

最新更新