.End (xlUp) .select - выбор следующего столбца, а не строки - PullRequest
0 голосов
/ 05 июля 2019

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

Код, который я использовал, работает нормально, когда я запускаю его первый раз (и в рабочей книге ничего нет). Он выбирает A2 и вставляет в 4 ячейки данных. Однако, когда я пытаюсь снова запустить тот же макрос, он выбирает B2 вместо A3?

Я использовал эту функцию несколько раз, но никогда раньше не видел ничего подобного. Мой код ниже.

'
' Macro6 Macro
'


Dim fRow As Long

With ActiveSheet

fRow = .Cells(.Rows.Count, 1).End(xlUp).Row  

.Cells(fRow).Offset(1, 0).Select

Selection.PasteSpecial Paste:=xlPasteValues

End With

End Sub

1 Ответ

2 голосов
/ 05 июля 2019

Проблема в том, что Cells нужна строка и столбец, такой как .Cells(fRow, "A")

Option Explicit

Public Sub PasteRows()
    With ActiveSheet
        Dim fRow As Long
        fRow = .Cells(.Rows.Count, 1).End(xlUp).Row  

        .Cells(fRow, "A").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    End With
End Sub

, также не используйте .Select, это плохая практика: вы можетевыгода от чтения Как избежать использования Select в Excel VBA .


В качестве альтернативы используйте следующее, которое еще короче:

Option Explicit

Public Sub PasteRows()
    With ActiveSheet
        .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...