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

Программирование на Visual Basic for Applications
Sandra_83
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 11.10.2006 (Ср) 15:32

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

Сообщение Sandra_83 » 11.10.2006 (Ср) 15:45

Привет всем, подскажите как решить проблему.

Есть таблица в Excel, в которую пользователи будут вносить значения.
Необходимо по нажатию кнопки добавлять в эту таблицу строки.
Проблема в том, что строка должна вставляться без значений, но с расчетными формулами в тех колонках, где это есть.

Sub AddRow(ShTittle)
ThisWorkbook.Sheets(ShTittle).Activate
Selection.Activate
ActiveCell.Offset(1, 0).EntireRow.Insert
End Sub

Так я просто вставляю строку. Если копировать текущую строку, то копируюся и все значения.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 11.10.2006 (Ср) 16:40

1)держать пустую строку с формулами и копировать оттуда
2) ThisWorkbook.Sheets(ShTittle).Cells(i,j).Formula = "здесь задовать формулу"

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 12.10.2006 (Чт) 9:49

Есть еще способ, указанный KL в этой теме:

http://bbs.vbstreets.ru/viewtopic.php?t=27969
Быть... или не быть. Вот. В чём вопрос?

Sandra_83
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 11.10.2006 (Ср) 15:32

Сообщение Sandra_83 » 12.10.2006 (Чт) 11:57

Спасибки, очень помогло, особенно ссылка.

Sandra_83
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 11.10.2006 (Ср) 15:32

New question

Сообщение Sandra_83 » 12.10.2006 (Чт) 17:55

Есть еще вопрос.

Лист, где находится таблица Propected и можно вставлять значения только в разрешенном Range.
Необходимо иметь возможность вставлять строчки тоже только в пределах таблицы. Как сделать проверку на границы таблицы, если нижнее поле четко не задано?

Сейчас код такой.

Sub RowAdd(ShtName)

Application.ScreenUpdating = False
Selection.Activate
ThisWorkbook.Sheets(ShtName).Activate

ThisWorkbook.Sheets(ShtName).Unprotect (pass)
On Error Resume Next
ActiveCell.EntireRow.Copy
ActiveCell.Offset(1, 0).EntireRow.Insert
ActiveCell.Offset(1, 0).PasteSpecial (xlPasteAll)
ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants).ClearContents
Cells(ActiveCell.Row, 1).Select
Application.CutCopyMode = False

ThisWorkbook.Sheets(ShtName).Protect (pass)
Application.ScreenUpdating = True

End Sub

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 13.10.2006 (Пт) 10:34

Если у тебя известна строчка, ниже которой нельзя вставлять строки, присвой ей имя на листе (например, "the_end"), и делай проверку, что
ActiveCell.Row<Range("the_end").Row
Быть... или не быть. Вот. В чём вопрос?

Sandra_83
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 11.10.2006 (Ср) 15:32

Сообщение Sandra_83 » 13.10.2006 (Пт) 16:46

Спасибо большущее, я видно туплю )))


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 78

    TopList