VBA-Loop с некоторыми листами - PullRequest
4 голосов
/ 27 марта 2012

Я новичок, и я хотел бы сделать цикл во всех листах моего файла Excel, кроме первого. Однако приведенный ниже код работает только на втором. Не могли бы вы объяснить, что не так в этом коде?

Большое спасибо

Sub MobileTCalculation()
'MobileTCalculation Macro
Dim i As Integer

For i = 1 To 40
Worksheets(1 + 1).Select
Range("A20").Select
On Error Resume Next
Next i

End Sub

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

Если вы хотите пропустить первый лист, измените цикл, как показано ниже. Worksheets(i + 1) выдаст вам ошибки, если в вашей книге только 40 листов;)

Используйте это

Sub MobileTCalculation()
    Dim i As Integer

    For i = 2 To 40
        Worksheets(i).Range("A20").Select
    Next i

End Sub

Также две вещи.

1) Использование On Error Resume Next - зло;) Используйте его только при необходимости.

2) Не используйте .SELECT Это замедляет ваш код. Вместо этого непосредственно выполните действие. Например

Sub MobileTCalculation()
    Dim i As Integer

    For i = 2 To 40
        With Worksheets(i).Range("A20")
            Debug.Print .Value
        End With
    Next i

End Sub

НТН

Sid

1 голос
/ 27 марта 2012

Вы должны изменить:

Worksheets(1 + 1).Select

, чтобы он использовал вашу переменную i ... вы просто поставили 1 + 1, чтобы он всегда оценивался в 2

Aклассическая ошибка:)

...