Сохранение данных из формы в таблице EXEL
Модератор: Naeel Maqsudov
1. нужно по нажатию кнопки записывать значение ячейки "А" в свободную строку другого листа.
2. нужно делать выборку данных из столбца по дате (за текущий месяц, за прошедший месяц, за год и всего.
Понимаю, что это все элементарно, но я не знаком с VB
Все больше php+mysql
Заранее спасибо за помощь
2. нужно делать выборку данных из столбца по дате (за текущий месяц, за прошедший месяц, за год и всего.
Понимаю, что это все элементарно, но я не знаком с VB
Все больше php+mysql
Заранее спасибо за помощь
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
1.
В какую-нибудь ячейку поместите формулу, которая подсчитывает, сколько ячеек уже заполнено.
=счет('ДругойЛист'!A:A) или =счетз('ДругойЛист'!A:A)
для удобства эту ячейку можно пометить именем (Вставка/Имя/Присвоить), например "Счетчик".
Теперь можно написать всего одну строчку:
WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value
2.
Меню Данные/Фильтр/Автофильтр - никакого VB - это обычная функциональность Excel
В какую-нибудь ячейку поместите формулу, которая подсчитывает, сколько ячеек уже заполнено.
=счет('ДругойЛист'!A:A) или =счетз('ДругойЛист'!A:A)
для удобства эту ячейку можно пометить именем (Вставка/Имя/Присвоить), например "Счетчик".
Теперь можно написать всего одну строчку:
WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value
2.
Меню Данные/Фильтр/Автофильтр - никакого VB - это обычная функциональность Excel
Я извиняюсь, а куда вписывать
спасибо за ответ
?WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value
спасибо за ответ
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Гхммм... э-э-э.... Гх-гхммм....
Значит так... ФОРМУ (если, конечно имеется в виду та самая форма, которая добавляется в VBA-проект, после перехода в "Редактор VBA" (Ctrl+F11)) Вы добавили, значит, кнопку на нее положить можете. В режиме редактирования формы двойной щелчок по кнопке переведет Вас в редактор текста программ, и создаст там процедуру вида
Так вот между строчками "Private Sub" и "End Sub" это все и вписывать.
Ну а для запуска формы будет нужен макрос
Для макросов целесообразно в проект добавить отдельный модуль.
Значит так... ФОРМУ (если, конечно имеется в виду та самая форма, которая добавляется в VBA-проект, после перехода в "Редактор VBA" (Ctrl+F11)) Вы добавили, значит, кнопку на нее положить можете. В режиме редактирования формы двойной щелчок по кнопке переведет Вас в редактор текста программ, и создаст там процедуру вида
Код: Выделить всё
Private Sub CommandButton1_Click()
|
End Sub
Ну а для запуска формы будет нужен макрос
Код: Выделить всё
Sub XXX()
UserForm1.Show
End Sub
При использованиие такой схемы WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value , выдает ошибу run-time, если ячейки "Счетчика" пустые(0). Как этого избежать?
Как записать из ("Ячейка_А"), данные в , допустим, 6 таблиц."ДругойЛист""ДругойЛист2" и т.д.
Спасибо за ответ.
Как записать из ("Ячейка_А"), данные в , допустим, 6 таблиц."ДругойЛист""ДругойЛист2" и т.д.
Спасибо за ответ.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
написать оператор IFвыдает ошибу run-time, если ячейки "Счетчика" пустые(0). Как этого избежать?
Код: Выделить всё
IF Range("Счетчик").Value>0 Then ....
....Cells(range("Счетчик").value+1,1).Value.....
Ну, шесть раз написатьКак записать из ("Ячейка_А"), данные в , допустим, 6 таблиц."ДругойЛист""ДругойЛист2" и т.д.
WorkSheets("ДругойЛистXXX").Cells(range("Счетчик").value+1,1).Value = Range("Ячейка_А").Value
Можно также организовать цикл. Например, по всем листам, названия которых начинаются с "ДругойЛист".
См. "For Each"
-
- Сообщения: 6
- Зарегистрирован: 19 окт 2004, 08:42
- Контактная информация:
ПРи использование этой схемы
WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value
Не получается записать значение из новой ячейки в "Другой лист"
Получается, что таким образом можно записать только одно значение из "листа", в "другой лист".
еСЛИ ПИСАТЬ ЕЩЕ РАЗ ЭТУ СТРОЧКУ(ДЛЯ ПЕРЕНОСА ЕЩЕ ОДНОЙ ЯЧЕЙКИ), ТО ОШИБОК НЕТ, НО И РЕЗУЛЬТАТА ТОЖЕ...
СПАСИБО
WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value
Не получается записать значение из новой ячейки в "Другой лист"
Получается, что таким образом можно записать только одно значение из "листа", в "другой лист".
еСЛИ ПИСАТЬ ЕЩЕ РАЗ ЭТУ СТРОЧКУ(ДЛЯ ПЕРЕНОСА ЕЩЕ ОДНОЙ ЯЧЕЙКИ), ТО ОШИБОК НЕТ, НО И РЕЗУЛЬТАТА ТОЖЕ...
СПАСИБО
-
- Сообщения: 6
- Зарегистрирован: 19 окт 2004, 08:42
- Контактная информация:
WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value
Как записать "ячейку B" в "другой лист"?
Если писать первую строчку, то ничего не происходит...
Есле можно по подробней..
Сапасибо за ответ
Как записать "ячейку B" в "другой лист"?
Если писать первую строчку, то ничего не происходит...
Есле можно по подробней..
Сапасибо за ответ
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
<any_range1>.value = <any_range2>.value
any_rangeX - это обращение к любому диапазону на любом листе!
Например:
WorkSheets("Лист1").Range("A1:B6").Value = WorkSheets("Лист2").Range("E2:F7").Value
Копирует содержимое Лист2!E2:F7 в Лист!A1:B6, т.е. сразу 12 ячеек.
any_rangeX - это обращение к любому диапазону на любом листе!
Например:
WorkSheets("Лист1").Range("A1:B6").Value = WorkSheets("Лист2").Range("E2:F7").Value
Копирует содержимое Лист2!E2:F7 в Лист!A1:B6, т.е. сразу 12 ячеек.