Создание макроса для отображения рабочих листов и очистки использованных строк, перезагрузка рабочей книги - PullRequest
1 голос
/ 11 февраля 2020

У меня есть книга на 52 листа, которую необходимо сбросить после сохранения файла в качестве копии. У меня есть часть UnHide, но я не могу понять, что Clearcontents.

На многих рабочих листах, но не на всех, в row A есть строка "State State All License Проверки "Он находится в переменной строке, между 6 и 12. Начиная с ws2 Я хочу найти строку и очистить строки под ней. Столбец range A:H

Затем проверьте следующую таблицу.

У меня есть это пока ..

Sub UnhideAllSheets()

Dim ws As Worksheet
Dim rowNum As Long
Dim stateReg As String

For Each ws In ActiveWorkbook.Worksheets

ws.Visible = xlSheetVisible
    If ws.Visible Then
     'Activate sheet
     ws.Activate

    'Look for String "State Requires All License Verifications"
        Set stateReq = .Find(what:="State Requires All License Verifications")

    'Null find quits loop
        If Not stateReq Is Nothing Then
        rowNum = stateReq.Row
        End If

    'Clear all Used rows after String(stateReq)

        With Sheets(ws)
            Intersect(.Range(.Rows(rowNum + 1), .UsedRange.Rows(.UsedRange.Rows.Count)), .Range("A:H")).ClearContents
        End With

     'Select and Zoom to A1 upon leaving the worksheet

        Range("A1").Select
        ActiveWindow.ScrollRow = 1
        ActiveWindow.ScrollColumn = 1

    End If

Next ws

'Jump back to the first worksheet "Information"
Sheets("Information").Select
Range("E2").Select

End Sub

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Попробуйте это. Не уверен, где вы застряли.

Я предположил, что строка находится в столбце A, и что A также является надежным индикатором последней использованной строки (поэтому может потребоваться изменить).

Также нет нужно активировать лист.

Sub UnhideAllSheets()

Dim ws As Worksheet
Dim rowNum As Long
Dim stateReg As Range

For Each ws In ActiveWorkbook.Worksheets
    ws.Visible = xlSheetVisible
    Set stateReg = ws.Columns(1).Find(what:="State Requires All License Verifications", Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
    If Not stateReg Is Nothing Then
        Range(stateReg.Offset(1), ws.Range("A" & Rows.Count).End(xlUp)).Resize(, 8).ClearContents
    End If
Next ws

'Jump back to the first worksheet "Information"
Application.Goto Sheets("Information").Range("E2")

End Sub
0 голосов
/ 11 февраля 2020

Может быть что-то вроде:

Sub Fresh_Slate()

Dim ws As Worksheet
Dim Found As Range
Dim Target As String
Dim lr As Long

Target = "State Requires All License Verifications"

For Each ws In ThisWorkbook.Sheets
    If ws.Name <> "Sheet1" Then          'You can add sheets to ignore here

        ws.Visible = xlSheetVisible
        Set Found = ws.Cells.Find(Target)

        If Not Found Is Nothing Then
            'Assuming Column A on each sheet is a good indicator of the last used row in range
            lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
            ws.Range(ws.Cells(Found.Row + 1, 1), ws.Cells(lr, 8)).ClearContents
        End If

        Set Found = Nothing
    End If
Next ws

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...