Доброго времени суток!
Мне необходимо настроить добавление строк в таблице, чтобы при двойном нажатии на ячейку "добавить" (C37) в таблице появлялась новая строка. Строка должна полностью цеплять все формулы и форматирования из предыдущей строки. Т.е. должна появиться строка (37,38) в интервале от B до BX с выпадающими списками, условными форматированиями, формулами и т.д. абсолютно аналогичная строке (35,36) и уже пронумерованная.
Как? Помогите ламеру.
Здравствуйте, в таких ситуациях очень помогает макрорекордер
Листинг
модуля листа "Лист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
Спасибо большое!
Про макросы раньше разве что только слышала и то краем уха. Попыталась разобраться, пока не очень выходит. От программирования весьма весьма далека... последний раз на уроках информатики в школе сталкивалась, классе в 5ом, кажется, была такая Черепашка Лого :)
Я в такой же таблице сама пытаюсь запустить этот макрос и у меня выскакивает ошибка Runtime Error 1004: Method 'Range' Of Object '_Worksheet' failed, строка If Target.Address = Range("добавить").Address Then выделяется жёлтым цветом.
Я так понимаю, там ссылка куда-то не туда идёт или что-то такое. Как исправить?
Не нужно в цитату вставлять целое сообщение[МОДЕРАТОР]
в книге, приложенной к предыдущему посту, есть именованный диапазон "добавить" его можно увидеть нажав Ctrl+F3
он ссылается на ячейку с надписью "добавить".
Добавьте, по аналогии, именованный диапазон в своей новой книге.
Спасибо! Всё работает)
А подскажите, пожалуйста, как сделать аналогичную ячейку с функцией удалить строку, если вдруг лишние добавились. Пытаюсь, но никак не выходит.
Цитата: Анисия от 27.02.2018, 13:14
как сделать аналогичную ячейку с функцией удалить строку, если вдруг лишние добавились.
Вспоминается фраза из мультика: "вы и есть за меня будете?"
выделяете лишние строки/столбцы и... нажимаете Ctrl+"-"
Нет, есть за меня не нужно) В дальнейшем планируется защита ячеек от редактирования. И все действия с добавлением/удалением строк хотелось вынести за рамки таблицы в подобие "кнопок". Нет так нет, буду дальше лопатить интернет, может-таки разберусь.
попробуйте адаптировать под свои нужды
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