Рабочий цикл, массив - PullRequest
       2

Рабочий цикл, массив

0 голосов
/ 23 декабря 2018

Я новичок, и я хотел бы сделать цикл во всех листах моего файла Excel, выполнив это конкретное действие: изменение формата для всех столбцов с определенным заголовком.К сожалению, приведенный ниже код работает только в активной рабочей таблице, а не в других рабочих листах в активной рабочей книге.Есть ли у вас какие-либо подсказки, что в этом плохого?

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

Sub loop()

Dim timelist As Variant, sht as worksheet, rcell As Range, 
rrow As Range, t As Integer

timelist = Array("Created", "Creation")

For Each sht In ActiveWorkbook.Worksheets

Set rrow = Range("A1.Z1")
For t = LBound(timelist) To UBound(timelist)
For Each rcell In rrow
rcell.Select
if rcell.Value = timelist(t) Then
   ActiveCell.Offset(1, 0).Range("A1").Select
          Range(Selection, Selection.End(xlDown)).Select
          Selection.NumberFormat = "dd/mm/yyyy hh:mm:ss"
    End If
Next rcell
Next t
Next sht

End Sub

1 Ответ

0 голосов
/ 23 декабря 2018

Цикл по рабочим листам не активирует рабочий лист токового цикла, поэтому вы должны указать все ссылки на диапазон к нему

Это можно сделать с помощью блока «With sht ... End With» ипредваряя точку перед всеми ссылками диапазона внутри блока

И не «выбирайте» ничего, а просто используйте объекты диапазона

For Each sht In ActiveWorkbook.Worksheets
    With sht 
        Set rrow = .Range("A1:Z1")
        For t = LBound(timelist) To UBound(timelist)
            For Each rcell In rrow
                If rcell.Value = timelist(t) Then
                    .Range(rcell.Offset(1, 0), rcell.Offset(1, 0).End(xlDown)).NumberFormat = "dd/mm/yyyy hh:mm:ss"
                End If
            Next rcell
        Next t
    End With
Next sht
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...