Проверьте диапазон ячеек для значения, а затем очистите содержимое после создания нового листа. - PullRequest
0 голосов
/ 21 ноября 2018

Я некоторое время скрывался в StackOverflow и собрал вместе некоторый код, чтобы помочь автоматизировать создание нового ежедневного отчета.Мой код работает нормально для поиска предыдущего отчета, генерации нового отчета с +1 и очистки некоторых диапазонов, которые необходимо сбрасывать каждый день.

Моя текущая проблема пытается очистить некоторые условные ячейки.Я пробовал несколько примеров близкого использования здесь и на других сайтах Excel / VBA, но я не достаточно опытен с VBA, чтобы иметь возможность напрямую переводить в подробности моего кода.

Чтобы быть более точным, для всех строк 47до 79 Мне нужно проверить, объединена ли ячейка H47: I47 содержит значение «N» для простой проверки «да нет»

Если это условие истинно, ТО мне нужно .clearcontents столбцы слева от ячейки проверки,поэтому A47: G47.Затем мне нужно повторить эту проверку для каждой строки до 79.

Я думаю, что моя проблема усложняется текущей структурой именования листов и пытается сослаться на постоянно меняющийся "sht_NewWeek)

Ниже я вставлю то, что у меня есть, и с нетерпением жду вашей помощи

Sub CreateNewSheet()

    Dim wrkSht As Worksheet
    Dim lWkNum As Long
    Dim lCurNum As Long
    Dim sht_LastWeek As Worksheet
    Dim sht_NewWeek As Worksheet

    'Find previous week and set reference to it.
    For Each wrkSht In ThisWorkbook.Worksheets
        If IsNumeric(Replace(wrkSht.Name, "Report ", "")) Then
            lCurNum = CLng(Replace(wrkSht.Name, "Report ", ""))
            If lCurNum > lWkNum Then lWkNum = lCurNum
        End If
    Next wrkSht
    Set sht_LastWeek = ThisWorkbook.Worksheets("Report " & lWkNum)

    'Create new sheet, set reference to it and rename.
    sht_LastWeek.Copy after:=Sheets(sht_LastWeek.Index)
    Set sht_NewWeek = Sheets(sht_LastWeek.Index + 1)
    sht_NewWeek.Name = "Report " & lCurNum + 1

    'Clear the cells and relink formula to previous sheet, while updating report date to today
    With sht_NewWeek
        .Range("D16:M16,B20:B44,C20:C44,D20:M44,D19:M19").ClearContents
        .Range("F12").Value = "=Today()"
        .Cells.Replace What:="'Report " & lCurNum - 1 & "'!", _
                       Replacement:="'Report " & lCurNum & "'!", _
                       LookAt:=xlPart
    End With


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