【问题标题】:not able to loop through all sheets无法遍历所有工作表
【发布时间】:2017-12-11 13:42:21
【问题描述】:

这里是 VBA 初学者, 我正在尝试在所有工作表中循环跟踪代码。 但每当我尝试运行它时,它只会针对当前活动工作表执行。

 Sub test1()

 Dim ws As Worksheet
 Dim i As Integer
 Dim k As Integer

     For Each ws In ActiveWorkbook.Sheets

         For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
             For k = Cells(Rows.Count, i).End(xlUp).Row To 3 Step -1

             Cells(k - 1, i) = Cells(k - 1, i) & ", " & Cells(k, i)

             Cells(k, i).Clear
             Next k

         Next i

     Next ws

 End Sub

提前致谢

【问题讨论】:

  • 我已经很久没有写过这些了,也不太记得 API,但是很奇怪你循环遍历 Sheets,将每个分配给 ws,但实际上从来没有之后参考ws。我认为ws 的某些属性对使用会有帮助。

标签: vba excel loops


【解决方案1】:

您需要在 Cells 前面加上您的工作表对象,例如 ws.Cells。以下是您的代码的工作版本。试一试。

Sub test1()

 Dim ws As Worksheet
 Dim i As Integer
 Dim k As Integer

     For Each ws In ActiveWorkbook.Sheets

         For i = 1 To ws.Cells(1, Columns.Count).End(xlToLeft).Column
             For k = ws.Cells(Rows.Count, i).End(xlUp).Row To 3 Step -1

             ws.Cells(k - 1, i) = ws.Cells(k - 1, i) & ", " & ws.Cells(k, i)

             ws.Cells(k, i).Clear
             Next k

         Next i

     Next ws

 End Sub

【讨论】:

  • 或者使用With...End With构造避免重复ws变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
  • 2021-01-05
  • 2013-08-14
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
相关资源
最近更新 更多