Страницы: 1
RSS
Создание формы для ввода данных в форматированную таблицу на разных листах, на одном листе форму для ввода, на втором таблицу куда собираются данные, на третьем справочник.
 
Надо сделать ввод в таблицу для анализа инфы из формы, где можно было бы писать примечания и тонкости ввода.
Нашёл много статей где про мастер форм говорится, но мне понравилось форма из листа.
В учебном примере всё было на одном листе, я смог разбить на разные, вроде всё работает, но выскакивает ошибка "400".
Подскажите пожалуйста, что я где напутал...

Спасибо.
 
zorkon71, назначаемый кнопке макрос должен быть в отдельном модуле. В окне VBE выбираете Insert > Module и в добавленный модуль переносите свой код из модуля листа. Ошибка 400 сразу исчезает и код компилируется.
Изменено: Irregular Expression - 27.07.2018 12:25:20
 
Цитата
Irregular Expression написал:
Ошибка 400 сразу исчезает и код компилируется.
Спасибо.
Да. Исчезла.
Только формула из первой колонки испортила лист формы.
Как переключить перед заполнением лист?

В кнопке я перепрописал функцию...

И кстати в таблицу информация не добавилась...
Изменено: zorkon71 - 27.07.2018 12:45:54
 
zorkon71,
1) Это уже отдельные вопросы, не имеющие отношения к заявленной теме.
2) Я не знаю, каким должен быть желаемый Вами результат выполнения кода.
Поэтому лучше создайте отдельную тему и приложите в ней пример того, что есть, и того, что хотите видеть в результате работы программы.

По сути вопроса:
Цитата
zorkon71 написал:
Как переключить меред заполнением лист?
Вам это не нужно. Просто разберитесь как ссылаться на листы и диапазоны в VBA:
Код
Range("A2").Value '- это значение ячейки A2 текущего активного листа
ActiveSheet.Range("A2").Value 'идентично предыдущей строке

List1.Range("A2").Value '- а это значение ячейки A2 листа List1, активным может быть любой другой лист.

Sheets(1).Range("A2").Value '- это значение ячейки А2 первого листа в книге.

Worksheets("ФОРМА ЗАКАЗА").Range("A2").Value '- а тут значение ячейки А2 листа с именем "ФОРМА ЗАКАЗА", имя листа - то, что указано у него на ярлыке в книге. Обычно это удобнее, чем обращаться по именам объектов типа List1.

With List1
    .Range("A2").Value 'Внутри блока With точка перед названием объекта отсылает к свойству родительского объекта, стоящего после слова With.
End With
Изменено: Irregular Expression - 27.07.2018 13:03:49
 
Цитата
Irregular Expression написал:
Вам это не нужно. Просто разберитесь как ссылаться на листы и диапазоны в VBA:
Спасибо.
Но по ссылкам макрос всё правильно просчитал.
Вот только вставил не на тот лист!

Я так понял что надо указать что где выделить:
Код
...
If nextRow > 2 Then
List1.Range("A2").Select
Selection.AutoFill Destination:=List1.Range("A2:A" & nextRow)
List1.Range("A2:A" & nextRow).Select
End If
...
Но теперь ещё интереснее ошибка...
Изменено: zorkon71 - 27.07.2018 13:14:34
 
Цитата
zorkon71 написал:
Но по ссылкам макрос всё правильно просчитал.Вот только вставил не на тот лист!
Первое предложение противоречит второму.
Цитата
Я так понял что надо указать что где выделить:
Да. А ещё нельзя использовать .Select и объект Selection на неактивном листе.
Зачем Вам Select и Selection вообще нужны?
Пишите просто:
Код
List1.Range("A2").AutoFill Destination:=List1.Range("A2:A" & nextRow)
- одной строкой вместо 3, всё работает.
Изменено: Irregular Expression - 27.07.2018 15:04:01
 
Irregular Expression, класс!
Нет слов!

Спасибо!
Изменено: zorkon71 - 27.07.2018 15:17:49
 
Спасибо огромное, за подсказку...
Надо немного изменить принцип ввода...

Не подскажете, как сделать грамотно, что бы вводить данные из многострочной формы?Я в файле примере перекинул таблицу ввода на первом листе.

Допустим можно назвать поля в форме типа Name1, Name2 и т.д., а в макросе зациклить добавление строк.
Но как проверить перед добавлением в таблицу на пустые поля?!
Да и прописывать например 15-20 строк, мне кажется не правильно. Есть более хитрый способ...


И вообще, правильно мыслю?

Спасибо!
Изменено: zorkon71 - 13.11.2018 23:26:09
 
Кто может подказать причину и как обойти причину?
Есть строка:
 nextRow = Ëèñò2.Cells(Ëèñò2.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
(так вставилось сюда через копи-паст, а вообще написано "Лист2.")
Так вот у меня на винде всё работает.
А на МАКе нет. Ругается.
Может есть варианты, какие-нибудь алиасы прописать?!


Спасибо.
 
Цитата
zorkon71 написал: так вставилось сюда через копи-паст
Код с кириллицей копируйте при включённой RU раскладкой клавиатуры.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan написал:
Цитата
Код с кириллицей копируйте при включённой RU раскладкой клавиатуры.
 nextRow = Ëèñò2.Cells(Ëèñò2.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
Не помогает... Да и как-то не понимаю как раскладка может повлиять...

А в текст макроса, я сам набивал с клавиатуры.
 
Цитата
zorkon71 написал:
Не помогает..
попробуйте ЕЩЁ раз. Только перед копированием (не перед вставкой!) переключите раскладку на RU
 
Цитата
Михаил С. написал:
перед копированием (не перед вставкой!) переключите раскладку на RU
так и делал.
Да проблема не в этом.
В макросе то я вводил вручную!
В версии 2016й, а в 2011 ужемакрос не работает!
Ругается что объект не найден!
 
Существует БЕСПЛАТНАЯ форма ввода данных - J-Walk Усовершенствованная форма данных!
Она позволяет:
1. удобный, вертикальный ввод: вместо очень неудобного горизонтального ввода,
2. расширять имена полей ввода, если они - "длинные", как Ваш, например,
   2.1. Наименование товара.
3. можно в правом нижнем углу потянуть форму "за хвост" вниз (вправо): форму растянуть вниз (вправо).
   3.1. под словом Close видно "картинку-штрих"!
4. можно задавать выпадающие списки, если ввод каких-либо полей требует обращение к выпадающим спискам!
5. нет ограничений на количество столбов таблицы ввода,
   5.1. в штатных формах для любых версий EXCEL есть ограничение на 32 столба таблицы ввода.
6. не надо "вымучивать" макрос, который должен обслуживать горизонтальную доморощенную форму и отвечать за сохранение Ваших данных!
   6.1. J-Walk Усовершенствованная форма данных все обеспечит самостоятельно!
____________________________________________________________­­_________________________
Установка J-Walk Усовершенствованная форма данных - проста, как советский трЁльник!!!
См. ссылки:
1. J-Walk Enhanced Data Form - это бесплатная надстройка Excel
2. Установка и подключение надстроек для Excel
____________________________________________________________­­_________________________
См. файлы!
 
Цитата
zorkon71 написал:
а в 2011 ужемакрос не работает!
переместите вопрос в Вопросы по Excel для Mac
 
Цитата
Михаил С. написал:
Цитата zorkon71  написал:а в 2011 ужемакрос не работает!переместите вопрос в  Вопросы по Excel для Mac
А это на винде!
 
Цитата
Мотя написал:
Существует БЕСПЛАТНАЯ форма ввода данных - J-Walk Усовершенствованная форма данных!
Спасибо!
Посмотрим...
Страницы: 1
Наверх