Страницы: 1
RSS
Если ячейка не пустая, заполнить значением выше, макрос не совсем корректный
 
Здравствуйте!
Подскажите, пожалуйста, есть таблица, заполняется автоматически, некоторые ячейки в строках пустые.
Нашел макрос, который заполняет все пустые ячейки таблицы значением ячейки выше. Это то, что нужно, но столкнулся с проблемой, заполняет по всему листу, а хотелось бы, чтобы заполнял только в столбцах D E F к примеру. Можете подсобить с этим вопросом? Спасибо огромное!
Код
Sub test()

Static rngUR As Range: Set rngUR = ActiveWorkbook.ActiveSheet.UsedRange
Dim rngBlank As Range: Set rngBlank = rngUR.Find("")
While Not rngBlank Is Nothing
rngBlank.Value = rngBlank.Offset(-1, 0).Value
Set rngBlank = rngUR.Find("", rngBlank)
Wend

End Sub
И второй момент, он почему-то при выполнении сбивает формат поля в некоторых ячейках (дата была в формате Общий 05-03-2020, а после выполнения стала 03.05.2020 в формате дата) сбивается формат, можно ли сохранить формат ячейки при копировании значения? Очень благодарен! :)  
 
Разобрался как сделать диапазон для D, теперь не понимаю как для E F также сделать
Код
Sub test()

Static rngUR As Range
 With ActiveSheet
        Set rngUR = .Range(.Cells(1, "D"), .Cells(.Cells(.Rows.Count, "D").End(xlUp).Row, "D"))
    End With
Dim rngBlank As Range: Set rngBlank = rngUR.Find("")
While Not rngBlank Is Nothing
rngBlank.Value = rngBlank.Offset(-1, 0).Value
Set rngBlank = rngUR.Find("", rngBlank)
Wend

End Sub
Изменено: Евгений Овчинников - 07.09.2020 13:10:09
 
Код
Sub test()
    Dim rngUR As Range
    Dim rngBlank As Range
    Set rngUR = Intersect(ActiveWorkbook.ActiveSheet.UsedRange, ActiveWorkbook.ActiveSheet.Range("d:f"))
    Set rngBlank = rngUR.Find("")
    While Not rngBlank Is Nothing
        rngBlank.Value = rngBlank.Offset(-1, 0).Value
        Set rngBlank = rngUR.Find("", rngBlank)
    Wend
End Sub
Изменено: Nordheim - 07.09.2020 13:48:56
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, Спасибо человеческое!! ;)  
Страницы: 1
Наверх