Страница 1 из 4
Почему макрос не работает?
Добавлено: 26 май 2008, 18:41
seergy
Помогите - не могу создать форму для заполнения базы на разных листах см. пример в файле
С уважением...
Re: Почему макрос не работает?
Добавлено: 26 май 2008, 19:25
VictorM
По все видимости, в этом виде (файл !!!дополнить базу через кнопку.xls) необходимо активировать нужный лист для заполнения данными соответствующей таблицы. А что мешает расположить форму выбора на том листе, где находится таблица? Есть какие-то ограничения?
Re: Почему макрос не работает?
Добавлено: 26 май 2008, 19:30
VictorM
Из вложения
пример аналог.xls
Хочу сделать что-то типа такого только проще совсем с запутался
Так может Вам проще сделать одну общую форму ввода со всеми полями сразу. Да и всех делов

Re: Почему макрос не работает?
Добавлено: 26 май 2008, 20:00
seergy
Уважаемый ВикторМ нужно следующее:
На главной форме нажимается кнопка "пополнить значения "(базу на другом, например, скрытом листе).
Появляется новая форма "введите код" с окошком ввода и кнопочкой окей., при нажатие которой база пополняется.
Пробовал такой макрос для формы - не работает:
Private Sub cmdOK_Click()
Dim LastRow As Long
LastRow = Sheets("базаТБО").Range("A65536").End(xlUp).Row + 1
Cells(LastRow, 1).Value = tbName.Text
Unload Me
End Sub
Private Sub tbName_Change()
End Sub
По поводу скрытых листов - пользуюсь Вашими подсказками всё работает.
Не могу разобраться с кодом следующего макроса для формы:
Dim LastRow As Long
LastRow = Range("A65536").End(xlUp).Row + 1
LastRow.Insert Shift:=xlDown
С уважением....
Re: Почему макрос не работает?
Добавлено: 26 май 2008, 20:24
VictorM
пополнить значения
а значения эти откуда берутся? Вводятся в полях формы?
И что Вы понимаете под словом "форма"?
Если это UserForm, то весь код для нее пишется в модуле самой формы.
Не могу разобраться с кодом следующего макроса для формы:
Dim LastRow As Long - объявляется переменная
LastRow
LastRow = Range("A65536").End(xlUp).Row + 1 - получаем последнюю (нижнюю) пустую ячейку столбца "А"
а вот это
LastRow.Insert Shift:=xlDown - непонятно...
Re: Почему макрос не работает?
Добавлено: 26 май 2008, 20:35
Aent
>Dim LastRow As Long
>LastRow = Range("A65536").End(xlUp).Row + 1
>LastRow.Insert Shift:=xlDown
Не мудрено что не можете разобраться. Ибо нет у длинных целых (long) метода Insert

Вторая строчка получает номер первой незаполненной ячейки в столбце A
Третья же просто бессмыслена. Даже если записать синтаксически правильно
Это будет означать вставку строки за строкой с номером LastRow, но по коду LastRow это
уже номер
пустой cтроки (предполагая что в других колонках нет данных, лежащих ниже
чем в колонке A)
Re: Почему макрос не работает?
Добавлено: 26 май 2008, 20:48
VictorM
Aent,
Вторая строчка получает номер первой незаполненной ячейки в столбце A
чес слово, я это и хотел сказать, но как-то коряво выразился
Третья же просто бессмыслена. Даже если записать синтаксически правильно
вот теперь понятно. Спасибо.

Re: Почему макрос не работает?
Добавлено: 27 май 2008, 06:53
seergy
Спасибо, то что надо. Отвечаю на ваш вопрос...:
"И что Вы понимаете под словом "форма"?"
Если это UserForm, то весь код для нее пишется в модуле самой формы.
Форма работает
через Call macros
В самом модуле макроса
Активируется форма: Userform.show
Да вы правы по поводу LastRow...
написал (думал сократить) " LastRow.Insert Shift:=xlDown " . Вместо:
Range(Cells(LastRow, 1), Cells(LastRow + 1, Columns.Count)).Insert Shift:=xlDown
C уважением ....
Не могли бы вы предложитьпримеры своих вариантов решение данных задач с кратким пояснением кода. А то по справке не очень доходит я не програмист - хорошо обучаюсь на примерах аналогах... если Вас не затруднит...
Re: Почему макрос не работает?
Добавлено: 27 май 2008, 10:21
seergy
Текущий вопрос
В макросе для формы как сделать, чтобы ячейки (по одной) удалялись нормально в диапозоне A:A со сдвигом в верх как в примере выше аналог.xls.
Private Sub CmdDel_Click()
Application.ScreenUpdating = False
Dim n As Integer
n = ComboBox1.ListIndex
Range(Cells(n + 1, 1), Cells(n + 1, 1)).Cells.Delete (или Delete Shift:=xlUp)
Unload Me
Application.ScreenUpdating = True
End Sub
Private Sub ComboBox1_Change()
End Sub
Private Sub UserForm_Initialize()
LastRow = Range("A65536").End(xlUp).Row - 1
ComboBox1.RowSource = "A4:A" & LastRow
End Sub
Re: Почему макрос не работает?
Добавлено: 27 май 2008, 16:44
VictorM
seergy, поймите, чем лучше Вы объясните, что Вам нужно, тем быстрее и правильнее Вам подскажут.
Из Вашего объяснения и фрагментов кода, особенно "урезанных", понять что - либо трудно. Отсюда и отсутствие советов и подсказок.
Может Вы как-то сформулируете общую задачу. Да файл с какими-то набросками не помешает.
В макросе для формы как сделать, чтобы ячейки (по одной) удалялись нормально в диапозоне A:A со сдвигом в верх как в примере выше аналог.xls.
да сделать-то элементарно, но надо же знать что удалять, какие-то критерии. Например в том же файле, удаляется название фирмы.