Пытаюсь создать макрос, который должен записывать значение [B1] в последнюю ячейку столбца А1 и время в соседнюю ячейку. Макрос не работает, Пишет Object Required и ссылается на Lastcell. Помогите разобраться где я допустил ошибку. И вообще с отладкой. Спасибо.
[vba]
Код
Sub ПоминутнаяЗапись() Application.DisplayAlerts = False Dim rng As Range, СтрокаДляЗаписи As Range, Sh As Worksheet, Target As Range, Lastcell As Integer
' Запустить вполнение этой процедуры через минуту еще раз (ежеминутный цикл) Application.OnTime Now + TimeValue("00:01:00"), _ "'" & ThisWorkbook.Name & "'!ЭтаКнига.ПоминутнаяЗапись" ' Задать лист с ячейкой, значения которой каждую минуту нужно сохранять Set Sh = Лист1 ' Задать ячейку, значения которой каждую минуту нужно сохранять Set Target = [b1] ' Отпределить последнюю строку для записи Set Lastcell = Cells(Rows.Count, 1).End(xlUp).Row Set СтрокаДляЗаписи.FormulaR1C1 = [R(Lastcell)C(1):R(Lastcell)C(2)] ' Добавить в конец дату+время и значение СтрокаДляЗаписи(1, 1) = Now СтрокаДляЗаписи(1, 2) = Target
[/vba]
Пытаюсь создать макрос, который должен записывать значение [B1] в последнюю ячейку столбца А1 и время в соседнюю ячейку. Макрос не работает, Пишет Object Required и ссылается на Lastcell. Помогите разобраться где я допустил ошибку. И вообще с отладкой. Спасибо.
[vba]
Код
Sub ПоминутнаяЗапись() Application.DisplayAlerts = False Dim rng As Range, СтрокаДляЗаписи As Range, Sh As Worksheet, Target As Range, Lastcell As Integer
' Запустить вполнение этой процедуры через минуту еще раз (ежеминутный цикл) Application.OnTime Now + TimeValue("00:01:00"), _ "'" & ThisWorkbook.Name & "'!ЭтаКнига.ПоминутнаяЗапись" ' Задать лист с ячейкой, значения которой каждую минуту нужно сохранять Set Sh = Лист1 ' Задать ячейку, значения которой каждую минуту нужно сохранять Set Target = [b1] ' Отпределить последнюю строку для записи Set Lastcell = Cells(Rows.Count, 1).End(xlUp).Row Set СтрокаДляЗаписи.FormulaR1C1 = [R(Lastcell)C(1):R(Lastcell)C(2)] ' Добавить в конец дату+время и значение СтрокаДляЗаписи(1, 1) = Now СтрокаДляЗаписи(1, 2) = Target
Почитаю на досуге=) Но возвращаясь, к нерабочему коду. Мне не понятно почему переменной Lastcell не нравится тип данных integer. Ведь метод .row возвращает просто номер строки или я ошибаюсь?
Почитаю на досуге=) Но возвращаясь, к нерабочему коду. Мне не понятно почему переменной Lastcell не нравится тип данных integer. Ведь метод .row возвращает просто номер строки или я ошибаюсь?S-freez
В Excel сколько строк? - 1 045 576 А в Integer? - 32 767
У меня последний номер строки до 200 не дотягивает, хотя если конечно считать что он с самой нижней сканировать начинает, тогда наверное справедливо. Пусть будет Long. Дальше идёт ошибка в .Formula R1C1
В Excel сколько строк? - 1 045 576 А в Integer? - 32 767
У меня последний номер строки до 200 не дотягивает, хотя если конечно считать что он с самой нижней сканировать начинает, тогда наверное справедливо. Пусть будет Long. Дальше идёт ошибка в .Formula R1C1S-freez
Сообщение отредактировал S-freez - Понедельник, 25.04.2016, 12:03
Sub ПоминутнаяЗапись() Application.DisplayAlerts = False Dim rng As Range, СтрокаДляЗаписи As Range, Sh As Worksheet, Target As Range, Lastcell As Long Application.OnTime Now + TimeValue("00:00:05"), "ЭтаКнига.ПоминутнаяЗапись" Set Sh = Лист1 Set Target = [b1] r_ = Cells(Rows.Count, 1).End(xlUp).Row + 1 Range("A" & r_) = Now Range("B" & r_) = Target End Sub
Private Sub Workbook_Open() ПоминутнаяЗапись End Sub
[/vba]
Добавлено [vba]
Код
rng As Range, СтрокаДляЗаписи As Range
[/vba] не нужно а строку r_ нужно так [vba]
Код
r_ = Sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
[/vba]
Добавлено. Вообще все поправил Вот так [vba]
Код
Sub ПоминутнаяЗапись() Application.ScreenUpdating = 0 Dim Sh As Worksheet, r_ As Long Application.OnTime Now + TimeValue("00:00:05"), "ЭтаКнига.ПоминутнаяЗапись" Set Sh = Лист1 r_ = Sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 Sh.Range("A" & r_) = Now Sh.Range("B" & r_) = Sh.Range("B1") End Sub
Private Sub Workbook_Open() ПоминутнаяЗапись End Sub
[/vba] Все это, конечно, в модуль книги.
Так нужно?
[vba]
Код
Sub ПоминутнаяЗапись() Application.DisplayAlerts = False Dim rng As Range, СтрокаДляЗаписи As Range, Sh As Worksheet, Target As Range, Lastcell As Long Application.OnTime Now + TimeValue("00:00:05"), "ЭтаКнига.ПоминутнаяЗапись" Set Sh = Лист1 Set Target = [b1] r_ = Cells(Rows.Count, 1).End(xlUp).Row + 1 Range("A" & r_) = Now Range("B" & r_) = Target End Sub
Private Sub Workbook_Open() ПоминутнаяЗапись End Sub
[/vba]
Добавлено [vba]
Код
rng As Range, СтрокаДляЗаписи As Range
[/vba] не нужно а строку r_ нужно так [vba]
Код
r_ = Sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
[/vba]
Добавлено. Вообще все поправил Вот так [vba]
Код
Sub ПоминутнаяЗапись() Application.ScreenUpdating = 0 Dim Sh As Worksheet, r_ As Long Application.OnTime Now + TimeValue("00:00:05"), "ЭтаКнига.ПоминутнаяЗапись" Set Sh = Лист1 r_ = Sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 Sh.Range("A" & r_) = Now Sh.Range("B" & r_) = Sh.Range("B1") End Sub
Private Sub Workbook_Open() ПоминутнаяЗапись End Sub
Вообще да. Работает. Правда не пойму почему)) Он теперь правда стал выдавать ошибки на другие макросы никак с этим не связанные и проблем раньше не создававших. Но данный макрос работает. Спасибо)
Вообще да. Работает. Правда не пойму почему)) Он теперь правда стал выдавать ошибки на другие макросы никак с этим не связанные и проблем раньше не создававших. Но данный макрос работает. Спасибо)S-freez