Страницы: 1
RSS
Макрос работает правильно при ручном запуске и неправильно при запуске кнопкой
 
Доброго времени суток. Прошу помочь разобраться в чем причина не корректной работы макроса. Если запускаю макрос1,то все происходит как нужно. Если добавляю его (макрос) под кнопку происходит не понятное для меня действие. Мучаюсь уже полдня, выручите, пожалуйста. Файл примера во вложении. Кнопка располагается на 1 листе, данные должны копироваться со второго листа на второй, за последним столбцом.
Спасибо всем.  
 
Legos, ошибки не наблюдаю. Комп пробовали перезагрузить?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Legos написал: Кнопка располагается на 1 листе
Делаем активным лист, на котором расположена кнопка, и запускаем макрос без кнопки. Результат тот же - неправильная работа?

Код
    With Sheets("лист2")
        Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial
        ActiveSheet.Paste  
    End With

Вставка на активный лист. With/End With в Вашем коде - совершенно бесполезный оператор. Зачем объявлена переменная lColumn - непонятно. Да и вообще непонятно, что Вы хотели получить.

Как записывается ссылка на ячейку (диапазон) листа?
Код
Sheets("лист2").Cells(...)

Точка перед Cells - принадлежность к родителю. А в Вашей записи и у Cells, и у Columns.Count родитель - активный лист
 
OFF
Цитата
vikttur написал:
перед Cells - принадлежность к родителю
она сирота просто
Не бойтесь совершенства. Вам его не достичь.
 
Нет, не сирота, и папа у ячейки очень активный :)
 
Цитата
Делаем активным лист, на котором расположена кнопка... Результат тот же - неправильная работа?
Как раз правильная. А по кнопке нет.

Цитата
Как записывается ссылка на ячейку (диапазон) листа?
A1:С10
 
Цитата
Legos написал: Как записывается ссылка на ячейку (диапазон) листа?
Это был вопрос и сразу после него - ответ: ЛИСТточкаДИАПАЗОН

Цитата
vikttur написал: непонятно, что Вы хотели получить.
Это?
Код
Private Sub CommandButton1_Click()
    Sheets("Лист1").Range("A1:J10").Copy
    
    With Sheets("Лист2")
        .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial
    End With
End Sub

А еще лучше:
Код
Private Sub CommandButton1_Click()
    With Sheets("лист2")
        Sheets("Лист1").Range("A1:J10").Copy .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 1)
    End With
End Sub

Обратите внимание на точки, информацию о которых я пытался Вам донести.
 
Спасибо большое, что находите время на таких как я. Поверьте это очень приятно.
Все работает! Еще раз спасибо!!!
 
А можно еще один дурацкий вопрос: как сделать во втором коде копирование без формул? Спасибо!!!!!
 
Код
Private Sub CommandButton1_Click()
    Sheets("Лист1").Range("A1:J10").Copy 'копируем с Лист1
    With Sheets("лист2")
        .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial xlValues 'вставляем значения на Лист2
    End With
End Sub
Изменено: New - 09.09.2021 19:18:09
 
В первом коде все понятно изначально было.. Как во втором реализовать вставку с определенными параметрами?.....
 
Legos, тут мало экстрасенсов, вам надо либо словами более подробно объяснить, либо приложить пример, в котором покажите, что именно вы хотите сделать
Страницы: 1
Наверх