Страницы: 1
RSS
При переносе данных оставить верхнюю строку пустой
 
Добрый день,
Не  могу понять, как заставить макрос вставлять данные в новой книге не в А1 ячейку, а в А2. Чтобы строка 1 оставалась полностью пустой. Подскажите, пожалуйста.
Если делаю Then Last Row = 2, то макрос поочередно перезаписывает все строки таблицы в строку 2. А если Last row = 1, то все ок, но мне нужно чтобы самая верхняя строка оставалась пустой.
Код
    Dim A, B, i%, Sample, LastRow&, DeskTopPath$
    Dim Cl As Range
    Set B = ActiveWorkbook
    Workbooks.Add
    Set Sample = Workbooks(Workbooks.Count)
    For Each Cl In B.Worksheets(1).[A11].CurrentRegion.Columns(1).Cells
        i = 1
        A = Cl.Resize(1, 31)
            If Cl.Row >= 12 Then
                If Not Cl.EntireRow.Hidden Then
        With Sample
            With .Worksheets("Лист1")
                        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                        If IsEmpty(.[A1]) Then LastRow = 1
                            .Cells(LastRow, 1) = A(i, 3)
                            .Cells(LastRow, 2) = A(i, 5)
                            .Cells(LastRow, 3) = A(i, 31)
            End With
        End With
                End If
            End If
    Next

End Sub
Изменено: eonka - 02.12.2022 10:00:24
 
Код
If IsEmpty(.[A1]) Then LastRow = 1

закомментируйте или удалите (зачем вы вообще это туда написали, какая цель преследовалась?)
и назвать переменную LastRow и присваивать ей значение на 1 больше за последней строкой...
вы это делаете специально? если код достанется врагам - они хрен его поймут
назовите NextRow или еще лучше FirstBlankRow если так любите осмысленные имена переменных)
Изменено: Ігор Гончаренко - 02.12.2022 10:20:20
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
eonka написал:
Если делаю Then Last Row = 2,
Вот так делаете?
Код
If IsEmpty(.[A2]) Then LastRow = 2


И, кстати, да - если в первую строку не хотите писать, то запись эта не нужна, как Игорь выше и написал.
Она, запись, нужна была только для того, чтобы в пустом столбце начать со строки 1, а не 2
Изменено: _Boroda_ - 02.12.2022 10:17:15
Скажи мне, кудесник, любимец ба’гов...
 
Аааа, я поняла. Она без этой строки начинает со второй потому что .row+1. Правильно? А если я захочу с третьей начать? Чего-то если я row +2 делаю, то он через одну пустую вставляет строки.
Помогите допонять).

И спасибо огромное, с нужной задачей уже справилась.  
 
Еще раз -
Цитата
_Boroda_ написал:
Вот так делаете?
1If IsEmpty(.[A2]) Then LastRow = 2
Обратите внимание на кусок [A2]
Скажи мне, кудесник, любимец ба’гов...
 
_Boroda_, Ухты, теперь поняла как с этим куском обращаться) Спасибо!

Ігор Гончаренко, Ахах) ну в общем...
Однажды захотелось сделать макрос, на который возможностей макросрекордера не хватало. Погуглила, нашла нечто, примерно делающее, что мне надо и это нечто стало базой моего будущего макроса. На нем же училась и постепенно получила начальные самые поверхностные знания, позволяющие читать код (вот сейчас, наверное, последняя строчка той базы перестала быть таинственной)). После того, как первый настоящий (не рекордовый) макрос оброс всеми необходимыми функциями и заработал, решила переписать старые макросы, сделанные рекордером. Чтоб работало без кучи костылей). Пригодился кусок из первого макроса - благо переменные не корабли, как не назови - все равно работают! За что спасибо им)).
 
Цитата
eonka написал:
как не назови - все равно работают
ну не скажите...Например, если назовете переменную Find или End или даже aS - можете поиметь проблемы :) Так что называть-то можно всяко, но только не зарезервированными константами и операторами. Это так, небольшая ремарочка к цитате.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх