Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA удаление записей / 21 сообщений из 21, страница 1 из 1
10.01.2014, 08:06
    #38521259
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Итак, предположим есть таблица с товарами, нужно сделать возможным удалить сведения о товарах, проданных в течение заданного сезона (например, зимой).
...
Рейтинг: 0 / 0
10.01.2014, 08:27
    #38521271
i45
i45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
MrSavDreИтак, предположим есть таблица с товарами, нужно сделать возможным удалить сведения о товарах, проданных в течение заданного сезона (например, зимой).

Это тест на пригодность, наём на работу или приказ?
...
Рейтинг: 0 / 0
10.01.2014, 09:30
    #38521333
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Код: sql
1.
DELETE FROM ТаблицаСТоварами WHERE СезонПродажи="Зима"
...
Рейтинг: 0 / 0
10.01.2014, 09:31
    #38521336
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
i45Это тест на пригодность, наём на работу или приказ?
мне особенно понравилось "Итак". Продолжаем давно начатаый разговор
...
Рейтинг: 0 / 0
10.01.2014, 10:24
    #38521395
i45
i45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Мне тоже!!

:)
...
Рейтинг: 0 / 0
10.01.2014, 10:26
    #38521402
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Задача:
1. Создать таблицу, которая содержит сведения о продаже товаров.
Структура таблицы:
- наименование товара;
- шифр товара;
- оптовая цена;
- розничная цена;
- дата продажи;
- количество проданного товара.
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. По заданному шифру товара выдавать информацию о нем. Определить:
• суммарная прибыль от продажи всех товаров;
• наименование товаров, которые продаются по самой высокой и самой низкой цене.
4. Создать на 2 листе книги таблицу, которая содержит сведения о продаже товаров в интервале между двумя заданными датами. Таблица должна содержать наименование товара и суммарную выручку.
5. Сортировать данные в таблице по заданному столбцу.
6. Увеличить розничную цену на Х% у товара с заданным наименованием (значение Х задано).
7. Удалить сведения о товарах, проданных в течение заданного сезона (например, зимой).

И то что уже сделано приложено, а нужно доделать 7-й пункт, прошу прощения за раннюю неточную формулировку
...
Рейтинг: 0 / 0
10.01.2014, 10:42
    #38521438
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Ок, так гораздо яснее.

Теперь вопрос, что вызывает затруднение? Удаление строки? Проверка вхождения даты в диапазон? Создание формы? Заполнение выпадающего списка? Цикл перебора записей?

Ждем конкретные вопросы.
...
Рейтинг: 0 / 0
10.01.2014, 10:47
    #38521454
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Поиск подходящей строки и её удаление, вот что не ясно
...
Рейтинг: 0 / 0
10.01.2014, 10:50
    #38521460
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Если не морочиться всякими автофильтрами, просто делается цикл перебора строк, функцией Month и Year проверяется вхождение даты в нужные значения, в случае совпадения - rows(i).delete
...
Рейтинг: 0 / 0
10.01.2014, 10:52
    #38521467
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
нюанс - не забывать, что при удалении строки предыдущая строка сдвигается вверх, надо сделать i=i-1, или гнать цикл от конца к началу
...
Рейтинг: 0 / 0
10.01.2014, 11:00
    #38521483
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Я очень плохо разбираюсь в цикловых и разветвляющихся операторах VBA, не могли бы вы написать пример для объекта OptionButton1? А дальше сам разберусь
...
Рейтинг: 0 / 0
10.01.2014, 11:27
    #38521552
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Хотя уже разобрался, осталась только одна проблема, мой код приблизительно таков:

Код: vbnet
1.
2.
3.
4.
5.
6.
i = 2
If OptionButton1 = True Then
Do While Month(Cells(i, 5)) <= 2
Rows(i).Delete
Loop
End If


Модератор: Учимся использовать тэги оформления кода - FAQ

Это для зимы, как учесть декабрь если он 12-й и явно больше 2-х?
...
Рейтинг: 0 / 0
10.01.2014, 11:42
    #38521592
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Код: vbnet
1.
Do While Month(Cells(i, 5)) <= 2 OR Month(Cells(i, 5)) = 12
...
Рейтинг: 0 / 0
10.01.2014, 11:43
    #38521599
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Только твой цикл закончится на первой же строке, где условие не соблюдается
...
Рейтинг: 0 / 0
10.01.2014, 11:55
    #38521632
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Почти заработало, но удаляются они только по порядку, декабрь будет в конце и не будет удален, такая же проблема с весной и прочими после зимы, программа их не видит и не удаляет, из-за чего это могло бы быть?
...
Рейтинг: 0 / 0
10.01.2014, 11:57
    #38521637
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Как сделать что бы он не заканчивался?
...
Рейтинг: 0 / 0
10.01.2014, 12:03
    #38521653
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Ну подумать немножко надо. У тебя же i=2 и не меняется. То есть ты можешь удалять только строку №2 и никакую другую.
...
Рейтинг: 0 / 0
10.01.2014, 12:07
    #38521662
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Со второй строчки, строго говоря. Не подскажете как сделать так что бы он все строчки проверял?
...
Рейтинг: 0 / 0
10.01.2014, 12:08
    #38521664
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Я же подсказал уже. Надо менять i
...
Рейтинг: 0 / 0
10.01.2014, 12:11
    #38521668
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
ладно, видимо толку не будет
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
i = 2
If OptionButton1 Then
  Do Until Cells(i, 5).Text = ""
    If Month(Cells(i, 5)) <= 2 Or Month(Cells(i, 5)) = 12 Then
      Rows(i).Delete
    Else
      i = i + 1
    End IF
  Loop
End If
...
Рейтинг: 0 / 0
10.01.2014, 12:13
    #38521672
MrSavDre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA удаление записей
Ошиблись, был догадался сам и делал через цикл for to, однако пустые строки он считал за 12 и выдавал ошибку, а решение проблемы с ними вы только что описали, примного благодарен
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA удаление записей / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]