Макрос будет работать в разработчике и с горячей клавишей, но не с кнопкой ... любая идея почему? - PullRequest
0 голосов
/ 23 ноября 2018

Как упомянуто выше, код прекрасно работает как в разработчике, так и с горячими клавишами, но когда я использую кнопку, кажется, что «перейти к последней строке + 1» не работает.Когда я выбираю кнопку, данные продолжают копироваться и копироваться в строку 2.

Sub Entry_Schedule()
' Entry_Schedule Macro
    Dim FrstEmptCll As Range
    FrstEmtCll = Range("A" & Rows.Count).End(xlUp).Row
    Sheets("Sheet2").Range("D4:I4").Copy
    Sheets("Data").Range("A" & FrstEmtCll + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   End Sub

1 Ответ

0 голосов
/ 23 ноября 2018

Вам необходимо указать каждый Диапазон, строки, столбцы и т. Д. С помощью рабочего листа:

FrstEmtCll = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Row

Вторая проблема заключается в том, что вы объявляете Dim FrstEmptCll As Range, но пытаетесь поставитьномер строки в объекте диапазона .End(xlUp).Row.

Так что либо Set диапазон до ячейки и смещение:

Option Explicit

Sub Entry_Schedule()
    ' Entry_Schedule Macro
    Dim FrstEmtCll As Range
    Set FrstEmtCll = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Offset(RowOffset:=1)
    Worksheets("Sheet2").Range("D4:I4").Copy
    FrstEmtCll.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Или используйте номер строки (как Long):

Option Explicit

Sub Entry_Schedule()
    ' Entry_Schedule Macro
    Dim FrstEmptRow As Long
    FrstEmptRow = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Row + 1
    Worksheets("Sheet2").Range("D4:I4").Copy
    Worksheets("Data").Range("A" & FrstEmptRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Кроме того, вы неправильно набрали имя своей переменной FrstEmptCll против FrstEmtCll (отсутствует p).Это означает, что у вас сейчас есть две разные переменные (что легко взрывает ваш код).Чтобы избежать таких ошибок, я настоятельно рекомендую активировать Option Explicit: в редакторе VBA перейдите на Инструменты Параметры Требуется объявление переменных .

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