Страницы: 1
RSS
Запуск макроса при добавлении данных на лист
 
Добрый день всем! Я только недавно начал работать в Excel и у меня нет опыта работы в макросах :(. Я сумел сделать один макрос с помощью функции "Запись Макроса". Он находит на листе столбик под названием "CTN" и сдвигает его налево (делает его первым столбиком на листе). Включается клавишами Ctrl+q. Теперь сам вопрос: можно ли сделать так, чтобы при вставке данных из листа "Для вставки" в лист "Data", макрос автоматически срабатывал и сдвигал столбик CTN налево? (без использования клавиш Ctrl+q). Заранее благодарю за любую помощь.
 
в модуль листа Data  Вам нужно вставить код:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range: Set rng = [A1:F10] 'Диапазон ячеек при изменении которого необходимо запускать макрос
    If Not Intersect(rng, Target) Is Nothing Then
     Call copy 'эта команда вызывает ваш макрос который выполняет свою работу
     End If
End Sub


Он срабатывает на изменение диапазона и запускает макрос, который Вы укажете.

Но тут есть несколько вопросов:
1) Вы потом не будете работать с листом, на который происходит вставка? (так как если будете и у вас поменяется значение в указанных ячейках, макрос сработает снова)
2) Ваш макрос выполняет не те действия, которые Вы описали в сообщении
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Цитата
Dyroff написал:
в модуль листа Data  Вам нужно вставить код:
Здравствуйте! Я добавил код, макрос не срабатывает автоматически, при нажатии ctrl+q открывается новая книга.

Цитата
Dyroff написал:
Но тут есть несколько вопросов:1) Вы потом не будете работать с листом, на который происходит вставка? (так как если будете и у вас поменяется значение в указанных ячейках, макрос сработает снова)2) Ваш макрос выполняет не те действия, которые Вы описали в сообщении
1) Менять значения в листе Data не планирую)
2) Буду очень признателен если вы обьясните, что же делает мой дурацкий макрос)
Большое спасибо
Изменено: Talgat12345 - 14.06.2018 07:24:29
 
Хотелось бы, чтобы столбик передвигался без открытия новой книги итд
 
Вот сама процедура
Уверен, что можно и короче было записать, но, как получилось:

Код
Sub rty()    

Dim numb As Double
Dim ColumnName As String
Dim c As Long, FirstColumn As Long, LastColumn As Long


Sheets("Data").Columns(1).Insert Shift:=xlToRight

    ColumnName = "CTN": On Error Resume Next: Err.Clear
    Range("1:1").Find(ColumnName).EntireColumn.Select
    numb = Selection.Column()
    If Err Then MsgBox "Столбец """ & ColumnName & """ не найден!", vbCritical
    Selection.Cut
    Range("A1").Select
    ActiveSheet.Paste
    'теперь удаляем пустые столбцы
    FirstColumn = ActiveSheet.UsedRange.Column
LastColumn = ActiveSheet.UsedRange.Columns.Count - 1 + ActiveSheet.UsedRange.Column
For c = LastColumn To FirstColumn Step -1
If Application.CountA(Columns(c)) = 0 Then
Columns(c).Delete
End If
Next c
End Sub


И вот код, который ее запускает:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range: Set rng = [A1:A500] 'Диапазон ячеек при изменении которого необходимо запускать макрос
    Application.EnableEvents = False
    If Not Intersect(rng, Target) Is Nothing Then
     Call rty 'эта команда вызывает ваш макрос который выполняет свою работу
     End If
     Application.EnableEvents = True
End Sub



Пробуйте. Файл прикрепил
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Большое спасибо!
 
Talgat12345, Пожалуйста)
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
Страницы: 1
Наверх