Страница 1 из 1

Сохранение данных из формы в таблице EXEL

Добавлено: 10 окт 2004, 16:17
samara
1. нужно по нажатию кнопки записывать значение ячейки "А" в свободную строку другого листа.

2. нужно делать выборку данных из столбца по дате (за текущий месяц, за прошедший месяц, за год и всего.

Понимаю, что это все элементарно, но я не знаком с VB

Все больше php+mysql

Заранее спасибо за помощь

Добавлено: 10 окт 2004, 22:38
Naeel Maqsudov
1.
В какую-нибудь ячейку поместите формулу, которая подсчитывает, сколько ячеек уже заполнено.

=счет('ДругойЛист'!A:A) или =счетз('ДругойЛист'!A:A)

для удобства эту ячейку можно пометить именем (Вставка/Имя/Присвоить), например "Счетчик".
Теперь можно написать всего одну строчку:

WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value

2.
Меню Данные/Фильтр/Автофильтр - никакого VB - это обычная функциональность Excel

Добавлено: 11 окт 2004, 09:21
samara
Я извиняюсь, а куда вписывать
WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value
?

спасибо за ответ

Добавлено: 11 окт 2004, 22:13
Naeel Maqsudov
Гхммм... э-э-э.... Гх-гхммм....
Значит так... ФОРМУ (если, конечно имеется в виду та самая форма, которая добавляется в VBA-проект, после перехода в "Редактор VBA" (Ctrl+F11)) Вы добавили, значит, кнопку на нее положить можете. В режиме редактирования формы двойной щелчок по кнопке переведет Вас в редактор текста программ, и создаст там процедуру вида

Код: Выделить всё

Private Sub CommandButton1_Click()
  |
End Sub
Так вот между строчками "Private Sub" и "End Sub" это все и вписывать.

Ну а для запуска формы будет нужен макрос

Код: Выделить всё

Sub XXX()
  UserForm1.Show
End Sub
Для макросов целесообразно в проект добавить отдельный модуль.

Добавлено: 16 окт 2004, 13:54
samara
При использованиие такой схемы WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value , выдает ошибу run-time, если ячейки "Счетчика" пустые(0). Как этого избежать?
Как записать из ("Ячейка_А"), данные в , допустим, 6 таблиц."ДругойЛист""ДругойЛист2" и т.д.

Спасибо за ответ.

Добавлено: 18 окт 2004, 08:26
Naeel Maqsudov
выдает ошибу run-time, если ячейки "Счетчика" пустые(0). Как этого избежать?
написать оператор IF

Код: Выделить всё

IF Range("Счетчик").Value>0 Then ....
Да! Еще вот что. В Cells(x,y) и x, и y должны быть >0 и поэтому наверное вы хотели написать
....Cells(range("Счетчик").value+1,1).Value.....

Как записать из ("Ячейка_А"), данные в , допустим, 6 таблиц."ДругойЛист""ДругойЛист2" и т.д.
Ну, шесть раз написать
WorkSheets("ДругойЛистXXX").Cells(range("Счетчик").value+1,1).Value = Range("Ячейка_А").Value

Можно также организовать цикл. Например, по всем листам, названия которых начинаются с "ДругойЛист".
См. "For Each"

Добавлено: 19 окт 2004, 08:49
RED OCTOBER
ПРи использование этой схемы
WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value

Не получается записать значение из новой ячейки в "Другой лист"
Получается, что таким образом можно записать только одно значение из "листа", в "другой лист".
еСЛИ ПИСАТЬ ЕЩЕ РАЗ ЭТУ СТРОЧКУ(ДЛЯ ПЕРЕНОСА ЕЩЕ ОДНОЙ ЯЧЕЙКИ), ТО ОШИБОК НЕТ, НО И РЕЗУЛЬТАТА ТОЖЕ...

СПАСИБО

Добавлено: 21 окт 2004, 09:46
RED OCTOBER
WorkSheets("ДругойЛист").Cells(range("Счетчик").value,1).Value = Range("Ячейка_А").Value
Как записать "ячейку B" в "другой лист"?
Если писать первую строчку, то ничего не происходит...
Есле можно по подробней..


Сапасибо за ответ

Добавлено: 25 окт 2004, 00:26
Naeel Maqsudov
<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 ячеек.