Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

добавление строки

Автор Анисия, 26.02.2018, 11:48

« назад - далее »

Анисия

Доброго времени суток!
Мне необходимо настроить добавление строк в таблице, чтобы при двойном нажатии на ячейку "добавить" (C37) в таблице появлялась новая строка. Строка должна полностью цеплять все формулы и форматирования из предыдущей строки. Т.е. должна появиться строка (37,38) в интервале от B до BX с выпадающими списками, условными форматированиями, формулами и т.д. абсолютно аналогичная строке (35,36) и уже пронумерованная.
Как? Помогите ламеру.   

boa

Здравствуйте, в таких ситуациях очень помогает макрорекордер
Листинг модуля листа "Лист1"

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = Range("добавить").Address Then
        Cancel = True
       
     With Application
        .Rows(Target.Row - 2 & ":" & Target.Row - 1).EntireRow.Copy
        .Rows(Target.Row).EntireRow.Insert Shift:=xlDown
        .CutCopyMode = False
        Target.Offset(-2, -1) = Target.Offset(-4, -1).Value + 1
        Target.Select
    End With
   
   End If
End Sub

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Анисия

#2
Спасибо большое!
Про макросы раньше разве что только слышала и то краем уха. Попыталась разобраться, пока не очень выходит. От программирования весьма весьма далека... последний раз на уроках информатики в школе сталкивалась, классе в 5ом, кажется, была такая Черепашка Лого :)

Я в такой же таблице сама пытаюсь запустить этот макрос и у меня выскакивает ошибка Runtime Error 1004: Method 'Range' Of Object '_Worksheet' failed, строка If Target.Address = Range("добавить").Address Then выделяется жёлтым цветом.
Я так понимаю, там ссылка куда-то не туда идёт или что-то такое. Как исправить?

Не нужно в цитату вставлять целое сообщение[МОДЕРАТОР]

boa

в книге, приложенной к предыдущему посту, есть именованный диапазон "добавить" его можно увидеть нажав Ctrl+F3
он ссылается на ячейку с надписью "добавить".
Добавьте, по аналогии, именованный диапазон в своей новой книге.
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Анисия

Спасибо! Всё работает)
А подскажите, пожалуйста, как сделать аналогичную ячейку с функцией удалить строку, если вдруг лишние добавились. Пытаюсь, но никак не выходит.

boa

Цитата: Анисия от 27.02.2018, 13:14
как сделать аналогичную ячейку с функцией удалить строку, если вдруг лишние добавились.

Вспоминается фраза из мультика: "вы и есть за меня будете?"

выделяете лишние строки/столбцы и... нажимаете Ctrl+"-"
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Анисия

Нет, есть за меня не нужно) В дальнейшем планируется защита ячеек от редактирования. И все действия с добавлением/удалением строк хотелось вынести за рамки таблицы в подобие "кнопок". Нет так нет, буду дальше лопатить интернет, может-таки разберусь.

boa

попробуйте адаптировать под свои нужды
Sub DeleteEmptyRow()
' удаляет пустые строки в выделенном диапазоне
    Dim F&: F = Selection.Row
    Dim l&: l = Selection.Rows.Count + F - 1
    Dim i&: For i = l To F Step -1
        If Application.WorksheetFunction.CountA(Selection.Rows(i - F + 1)) = 0 Then ActiveSheet.Rows(i).Delete
    Next
End Sub
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра