Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как автоматически создать новую строку около каждой ячейки с новым ФИО.
 
Добрый день.

Каждый день делаю таблицы для сотрудников. Возникла потребность в снижении времени на это.
Есть столбец с ФИО, Выше ячейки с новым фио нужно создавать новую пустую строку. В эту пустую строку я вписываю ФИО, указанное ниже, и выделяю желтым цветом. И т.д.

Прикрепил файл для примера.
Помогите пожалуйста, может макрос какой то поможет.
 
Если я правильно понял, то подобная задача с помощью записи макросов достаточно легко реализуется.
Встаем на нужную ячейку и выполняем макрос. Можно назначить горячую клавишу для выполнения.
Код
Sub ЖелтыйФИО()

    Selection.Insert
    Cells(Selection.Row, 1) = Cells(Selection.Row - 1, 1)
    Cells(Selection.Row, 1).Interior.Color = vbYellow
    
End Sub
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
 
К сожалению не создается новая строка. Вместо этого макрос копирует верхнюю ячейку и выделяет желтым цветом.

Как было:
ФИО1
ФИО1
ФИО1
ФИО2
ФИО2

Как стало:
ФИО1
ФИО1
ФИО1
ФИО1
ФИО2
ФИО2
ФИО2

Как видите, создается новая строка, копируется текст из ячейки снизу и выделяется желтым.
 
Я поковырялся в вашем макросе, путем нескольких попыток, смог получить ПОЧТИ тот результат, которого хотел.
Код
Sub ЖелтыйФИО()
    Selection.Insert
    
    Cells(Selection.Row, 1) = Cells(Selection.Row - -1, 1)
    Cells(Selection.Row, 1).Interior.Color = vbYellow   
End Sub

Теперь он создает новую строку, копирует текст снизу и выделяет желтым.
Но делает он это только на той строке, которую я укажу.
Нельзя при нажатии макроса сделать так, чтобы программа сама находила когда в ячейке происходит смена фамилии и создавала новые строки во всем листе, а не только там где я укажу?
 
Вариант на двойной клик. Скопируйте код в модуль листа:
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then
        Rows(Target.Row).Resize(1).Insert
        With Target.Offset(-1, 0)
            .Interior.ColorIndex = 6
            .Value = Target
        End With
        Cancel = True
    End If
End Sub
 
Цитата
Юрий М написал:
Вариант на двойной клик. Скопируйте код в модуль листа:
Расскажите пожалуйста подробнее как использовать модуль? Что за двойной клик?
 
1. Скопировать текст макроса из сообщения.
2. Правый клик по ярлычку листа - Исходный текст. В открывшееся окно вставить скопированное.
Теперь по событию двойного клика в указанном диапазоне будет запускать этот макрос.
===
Клик (Click) - нажатие на кнопку мышки (щелчок). Двойной клик - двойное нажатие. По умолчанию разговор о левой кнопке. Если правая - это обговаривается специально.  Иногда можно встретить аббревиатуру ПКМ - правый клик мышкой.
Страницы: 1
Читают тему (гостей: 1)
Наверх