Почему макрос не работает?
Модератор: Naeel Maqsudov
Помогите - не могу создать форму для заполнения базы на разных листах см. пример в файле
С уважением...
С уважением...
- Вложения
-
- Новая папка (2).zip
- (25.82 КБ) 42 скачивания
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
По все видимости, в этом виде (файл !!!дополнить базу через кнопку.xls) необходимо активировать нужный лист для заполнения данными соответствующей таблицы. А что мешает расположить форму выбора на том листе, где находится таблица? Есть какие-то ограничения?
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Из вложения пример аналог.xls

Так может Вам проще сделать одну общую форму ввода со всеми полями сразу. Да и всех деловХочу сделать что-то типа такого только проще совсем с запутался

"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Уважаемый ВикторМ нужно следующее:
На главной форме нажимается кнопка "пополнить значения "(базу на другом, например, скрытом листе).
Появляется новая форма "введите код" с окошком ввода и кнопочкой окей., при нажатие которой база пополняется.
Пробовал такой макрос для формы - не работает:
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
С уважением....
На главной форме нажимается кнопка "пополнить значения "(базу на другом, например, скрытом листе).
Появляется новая форма "введите код" с окошком ввода и кнопочкой окей., при нажатие которой база пополняется.
Пробовал такой макрос для формы - не работает:
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
С уважением....
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
а значения эти откуда берутся? Вводятся в полях формы?пополнить значения
И что Вы понимаете под словом "форма"?
Если это UserForm, то весь код для нее пишется в модуле самой формы.
Dim LastRow As Long - объявляется переменная LastRowНе могу разобраться с кодом следующего макроса для формы:
LastRow = Range("A65536").End(xlUp).Row + 1 - получаем последнюю (нижнюю) пустую ячейку столбца "А"
а вот это LastRow.Insert Shift:=xlDown - непонятно...
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
>Dim LastRow As Long
>LastRow = Range("A65536").End(xlUp).Row + 1
>LastRow.Insert Shift:=xlDown
Не мудрено что не можете разобраться. Ибо нет у длинных целых (long) метода Insert
Вторая строчка получает номер первой незаполненной ячейки в столбце A
Третья же просто бессмыслена. Даже если записать синтаксически правильно
Это будет означать вставку строки за строкой с номером LastRow, но по коду LastRow это
уже номер пустой cтроки (предполагая что в других колонках нет данных, лежащих ниже
чем в колонке A)
>LastRow = Range("A65536").End(xlUp).Row + 1
>LastRow.Insert Shift:=xlDown
Не мудрено что не можете разобраться. Ибо нет у длинных целых (long) метода Insert

Вторая строчка получает номер первой незаполненной ячейки в столбце A
Третья же просто бессмыслена. Даже если записать синтаксически правильно
Код: Выделить всё
Rows(LastRow).Insert Shift:=xlDown
уже номер пустой cтроки (предполагая что в других колонках нет данных, лежащих ниже
чем в колонке A)
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Aent,

чес слово, я это и хотел сказать, но как-то коряво выразилсяВторая строчка получает номер первой незаполненной ячейки в столбце A

вот теперь понятно. Спасибо.Третья же просто бессмыслена. Даже если записать синтаксически правильно

"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Спасибо, то что надо. Отвечаю на ваш вопрос...:
"И что Вы понимаете под словом "форма"?"
Если это UserForm, то весь код для нее пишется в модуле самой формы.
Форма работает
через Call macros
В самом модуле макроса
Активируется форма: Userform.show
Да вы правы по поводу LastRow...
написал (думал сократить) " LastRow.Insert Shift:=xlDown " . Вместо:
Range(Cells(LastRow, 1), Cells(LastRow + 1, Columns.Count)).Insert Shift:=xlDown
C уважением ....
Не могли бы вы предложитьпримеры своих вариантов решение данных задач с кратким пояснением кода. А то по справке не очень доходит я не програмист - хорошо обучаюсь на примерах аналогах... если Вас не затруднит...
"И что Вы понимаете под словом "форма"?"
Если это UserForm, то весь код для нее пишется в модуле самой формы.
Форма работает
через Call macros
В самом модуле макроса
Активируется форма: Userform.show
Да вы правы по поводу LastRow...
написал (думал сократить) " LastRow.Insert Shift:=xlDown " . Вместо:
Range(Cells(LastRow, 1), Cells(LastRow + 1, Columns.Count)).Insert Shift:=xlDown
C уважением ....
Не могли бы вы предложитьпримеры своих вариантов решение данных задач с кратким пояснением кода. А то по справке не очень доходит я не програмист - хорошо обучаюсь на примерах аналогах... если Вас не затруднит...
Текущий вопрос
В макросе для формы как сделать, чтобы ячейки (по одной) удалялись нормально в диапозоне 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
В макросе для формы как сделать, чтобы ячейки (по одной) удалялись нормально в диапозоне 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
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
seergy, поймите, чем лучше Вы объясните, что Вам нужно, тем быстрее и правильнее Вам подскажут.
Из Вашего объяснения и фрагментов кода, особенно "урезанных", понять что - либо трудно. Отсюда и отсутствие советов и подсказок.
Может Вы как-то сформулируете общую задачу. Да файл с какими-то набросками не помешает.
Из Вашего объяснения и фрагментов кода, особенно "урезанных", понять что - либо трудно. Отсюда и отсутствие советов и подсказок.
Может Вы как-то сформулируете общую задачу. Да файл с какими-то набросками не помешает.
да сделать-то элементарно, но надо же знать что удалять, какие-то критерии. Например в том же файле, удаляется название фирмы.В макросе для формы как сделать, чтобы ячейки (по одной) удалялись нормально в диапозоне A:A со сдвигом в верх как в примере выше аналог.xls.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".