循环遍历工作簿中的所有工作表

时间:2014-07-24 11:23:32

标签: excel vba excel-vba

这是我遍历所有工作表的代码。我想从所有工作表中复制特定的单元格值并将其粘贴到我的主工作表中。首先我尝试了一张工作表,工作正常。我修改了相同的代码来遍历工作簿中的所有工作表。我显示了我要复制的工作表名称和数据。它正确地进入所有工作表但我没有获得工作表的数据,除了第一张表。即使它没有在msgbox中显示,除了第一个工作表。

    For Each ws In ActiveWorkbook.Worksheets
    If Range("C3").Value = "" Then
    Coverge_ID = Range("C2")
    MsgBox Coverge_ID
    ThisWorkbook.Worksheets(2).Activate
    Range("A1").Offset(I, 0) = Coverge_ID
    I = I + 1
    Else
    Coverge_ID = Range("C3")
    MsgBox Coverge_ID
    ThisWorkbook.Worksheets(2).Activate
    Range("A1").Offset(I, 0) = Coverge_ID
    I = I + 1
    End If
    MsgBox ws.Name
    Next ws

1 个答案:

答案 0 :(得分:1)

一些事情:

  • 通过使用Range()变量对ws进行限定
  • ,您实际上并未参考循环中的工作表
  • 您不需要激活工作表以向其附加值

请尝试使用以下代码:

Dim ws As Worksheet
Dim i As Long
Dim Coverage_ID As String

For Each ws In ActiveWorkbook.Worksheets
    If ws.Range("C3").Value = "" Then
        Coverage_ID = ws.Range("C2").Value
        MsgBox Coverage_ID
        ThisWorkbook.Worksheets(2).Range("A1").Offset(i, 0) = Coverage_ID
        i = i + 1
    Else
        Coverage_ID = ws.Range("C3").Value
        MsgBox Coverage_ID
        ThisWorkbook.Worksheets(2).Range("A1").Offset(i, 0) = Coverage_ID
        i = i + 1
    End If
    MsgBox ws.Name
Next ws