Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставлять в таблицу выборочные строки другой таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставлять в таблицу выборочные строки другой таблицы (Макросы Sub)
Вставлять в таблицу выборочные строки другой таблицы
DAKRAY Дата: Понедельник, 20.01.2014, 20:16 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Доброго времени суток, уважаемые форумчане!

Есть две таблицы. Первую таблицу использую в бланке счета. Вторую таблицу использую в бланке накладной.
Когда счет выписан есть два варианта дальнейших событий.
Первый - это когда клиент забирает сразу весь материал, так как выписано в счете. С этим проблем нет - жмем кнопку "All positions", и таблица заполняется.
Второй - когда клиент хочет забрать одну или несколько позиций, но не все. С этим проблемы. Добавил напротив каждой позиции кнопку. И они добавляются одна под другой, но только не в то место куда нужно.

Как правильно указать ячейку, куда будет вставлятся первая позиция, а за ней уже остальные, которые хочу добавить? Весь день отмучался не получается.

Файл пример в приложении.
К сообщению приложен файл: test_pos.xls (74.5 Kb)


Сообщение отредактировал DAKRAY - Понедельник, 20.01.2014, 20:17
 
Ответить
СообщениеДоброго времени суток, уважаемые форумчане!

Есть две таблицы. Первую таблицу использую в бланке счета. Вторую таблицу использую в бланке накладной.
Когда счет выписан есть два варианта дальнейших событий.
Первый - это когда клиент забирает сразу весь материал, так как выписано в счете. С этим проблем нет - жмем кнопку "All positions", и таблица заполняется.
Второй - когда клиент хочет забрать одну или несколько позиций, но не все. С этим проблемы. Добавил напротив каждой позиции кнопку. И они добавляются одна под другой, но только не в то место куда нужно.

Как правильно указать ячейку, куда будет вставлятся первая позиция, а за ней уже остальные, которые хочу добавить? Весь день отмучался не получается.

Файл пример в приложении.

Автор - DAKRAY
Дата добавления - 20.01.2014 в 20:16
pechkin Дата: Понедельник, 20.01.2014, 22:23 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Сам ничего не соображая в Макросах введите в диапазон H8-K8 что нибудь , например,1.2.3.4 и может заработает.


Сообщение отредактировал pechkin - Понедельник, 20.01.2014, 22:23
 
Ответить
СообщениеСам ничего не соображая в Макросах введите в диапазон H8-K8 что нибудь , например,1.2.3.4 и может заработает.

Автор - pechkin
Дата добавления - 20.01.2014 в 22:23
doober Дата: Вторник, 21.01.2014, 01:54 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Немного подправил ваш код,уничтожил лишние кнопки,как врагов народа.
Для одиночного добавления двойной клик в столбце F,
данные сами прыгать будут в нужную позицию,еще и сетку за собой создадут .

Virgo, a Virgem
К сообщению приложен файл: 2540999.xls (69.5 Kb)




Сообщение отредактировал doober - Вторник, 21.01.2014, 04:13
 
Ответить
СообщениеНемного подправил ваш код,уничтожил лишние кнопки,как врагов народа.
Для одиночного добавления двойной клик в столбце F,
данные сами прыгать будут в нужную позицию,еще и сетку за собой создадут .

Virgo, a Virgem

Автор - doober
Дата добавления - 21.01.2014 в 01:54
Wasilich Дата: Вторник, 21.01.2014, 11:35 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
клиент хочет забрать одну или несколько позиций, но не все.
В колонку F внесите любые символы напротив нужных позиций, нажмите кнопку.
К сообщению приложен файл: DAKRAY2.xls (60.5 Kb)
 
Ответить
Сообщение
клиент хочет забрать одну или несколько позиций, но не все.
В колонку F внесите любые символы напротив нужных позиций, нажмите кнопку.

Автор - Wasilich
Дата добавления - 21.01.2014 в 11:35
DAKRAY Дата: Вторник, 21.01.2014, 13:31 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
doober, спасибо! Немного неудобно с Вашим вариантом добавлять. Но все ровно большое спасибо. Если бы не Василик, Вы бы мне очень помогли.

Wasilic, идеально!!! Именно то что нужно!!! Безмерно благодарен. Красава!

[p.s.]Все. Уже запустил на прошлой неделе в офисе betaверсию своей работы.
Некоторые места конечно надо было еще подредактировать, но в целом закончил. И постараюсь вас, уважаемые форумчане, больше не беспокоить. Очень заинтересовал эксель, буду пробовать теперь тоже помогать тут людям, если получится).[/p.s.]


Сообщение отредактировал DAKRAY - Вторник, 21.01.2014, 13:41
 
Ответить
Сообщениеdoober, спасибо! Немного неудобно с Вашим вариантом добавлять. Но все ровно большое спасибо. Если бы не Василик, Вы бы мне очень помогли.

Wasilic, идеально!!! Именно то что нужно!!! Безмерно благодарен. Красава!

[p.s.]Все. Уже запустил на прошлой неделе в офисе betaверсию своей работы.
Некоторые места конечно надо было еще подредактировать, но в целом закончил. И постараюсь вас, уважаемые форумчане, больше не беспокоить. Очень заинтересовал эксель, буду пробовать теперь тоже помогать тут людям, если получится).[/p.s.]

Автор - DAKRAY
Дата добавления - 21.01.2014 в 13:31
DAKRAY Дата: Пятница, 24.01.2014, 17:21 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Wasilic ну или кто-нибудь!)

Нужен небольшой аптдэйт. Ну никак не получается самому, все не туда вставляет))
Я добавил в файл еще одну кнопку.
Дело в том, что часто бывает так, что накладную приходится выписывать, когда клиент забирает что-то из одного счета, что-то из другого.
Т.е. допустим у меня в одном счете 3 позиции, из них забираем скажем первую (вписываем в колонке F что угодно напротив нужно позиции и жмем кнопку Add Selected pos.). Во втором счете 2 позиции - из них тоже забираем, например, первую - жмем кнопку Add more pos..
Нужно сделать так, чтобы нажав на вторую кнопку, он добавил к уже существующей позиции.

Файл пример в приложении.
К сообщению приложен файл: Test_AddPos.xls (65.5 Kb)
 
Ответить
СообщениеWasilic ну или кто-нибудь!)

Нужен небольшой аптдэйт. Ну никак не получается самому, все не туда вставляет))
Я добавил в файл еще одну кнопку.
Дело в том, что часто бывает так, что накладную приходится выписывать, когда клиент забирает что-то из одного счета, что-то из другого.
Т.е. допустим у меня в одном счете 3 позиции, из них забираем скажем первую (вписываем в колонке F что угодно напротив нужно позиции и жмем кнопку Add Selected pos.). Во втором счете 2 позиции - из них тоже забираем, например, первую - жмем кнопку Add more pos..
Нужно сделать так, чтобы нажав на вторую кнопку, он добавил к уже существующей позиции.

Файл пример в приложении.

Автор - DAKRAY
Дата добавления - 24.01.2014 в 17:21
Hugo Дата: Пятница, 24.01.2014, 18:04 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
DAKRAY, вопрос по коду - у Вас SummaVardiem() корректно обрабатывает например 14 или 16? У меня нет... Или с нужной локалью всё работает?
В коде эти символы есть - при копипасте в блокнот видно. Но в VBE у меня они искажаются, отображаются иначе, и на листе тоже.
Всегда думал что выход только использовать chrw() - но можно просто сменить локаль? :)

По делу:
[vba]
Код
Private Sub more_pos_Click()
      Dim s&
      s = Range("H" & Rows.Count).End(xlUp).Row + 1
      For i = 2 To Range("F" & Rows.Count).End(xlUp).Row
        If Cells(i, 6) <> "" Then
           Cells(s, 8) = Cells(i, 1)
           Cells(s, 9) = Cells(i, 2)
           Cells(s, 10) = Cells(i, 3)
           Cells(s, 11) = Cells(i, 4)
           s = s + 1
        End If
      Next
      Range("F1:F100").ClearContents
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеDAKRAY, вопрос по коду - у Вас SummaVardiem() корректно обрабатывает например 14 или 16? У меня нет... Или с нужной локалью всё работает?
В коде эти символы есть - при копипасте в блокнот видно. Но в VBE у меня они искажаются, отображаются иначе, и на листе тоже.
Всегда думал что выход только использовать chrw() - но можно просто сменить локаль? :)

По делу:
[vba]
Код
Private Sub more_pos_Click()
      Dim s&
      s = Range("H" & Rows.Count).End(xlUp).Row + 1
      For i = 2 To Range("F" & Rows.Count).End(xlUp).Row
        If Cells(i, 6) <> "" Then
           Cells(s, 8) = Cells(i, 1)
           Cells(s, 9) = Cells(i, 2)
           Cells(s, 10) = Cells(i, 3)
           Cells(s, 11) = Cells(i, 4)
           s = s + 1
        End If
      Next
      Range("F1:F100").ClearContents
End Sub
[/vba]

Автор - Hugo
Дата добавления - 24.01.2014 в 18:04
AndreTM Дата: Пятница, 24.01.2014, 18:16 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
При нормальном бухучете - обычно не позволяется произвольно объединять последовательности документов.
Чтобы получить то, что вы желаете - надо начинать использовать накопительные таблицы (счетов и накладных, причём с уникальной кодировкой каждой позиции), а формы составлять уже на основе этих таблиц.
Если же вы желаете продолжать в том же духе "доставания гланд через..."- могу предложить (как вам советовали выше) придумать систему отметок для связи счёт-накладная. Т.е. пишем в доп.столбец в счёте не "что угодно", а код накладной, в которую попадёт данная позиция. Тогда вся работа макроса по "сборке" будет заключаться в том, что он, например, будет несколько раз (сколко нужно накладных собрать) проходить все имеющиеся счета счета и набирать позиции в нужные накладные, при этом как счетов, так и накладных может быть любое количество... А на самом деле, делать вложенные циклы не нужно - достаточно собрать все позиции всех счетов в один список, отсортировать его по коду накладной - и разбить его по накладным за один проход (пустые или "неформатные" коды, естественно, могут означать то, что вы пожелаете - например, то, что товар ещё не отгружается :) )
Как-то так...
И чем вам всем так готовые CRM не нравятся-то? Я же вроде уже упоминал, что, например, Бизнес-Пак в ваших условиях настроить - раз плюнуть...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеПри нормальном бухучете - обычно не позволяется произвольно объединять последовательности документов.
Чтобы получить то, что вы желаете - надо начинать использовать накопительные таблицы (счетов и накладных, причём с уникальной кодировкой каждой позиции), а формы составлять уже на основе этих таблиц.
Если же вы желаете продолжать в том же духе "доставания гланд через..."- могу предложить (как вам советовали выше) придумать систему отметок для связи счёт-накладная. Т.е. пишем в доп.столбец в счёте не "что угодно", а код накладной, в которую попадёт данная позиция. Тогда вся работа макроса по "сборке" будет заключаться в том, что он, например, будет несколько раз (сколко нужно накладных собрать) проходить все имеющиеся счета счета и набирать позиции в нужные накладные, при этом как счетов, так и накладных может быть любое количество... А на самом деле, делать вложенные циклы не нужно - достаточно собрать все позиции всех счетов в один список, отсортировать его по коду накладной - и разбить его по накладным за один проход (пустые или "неформатные" коды, естественно, могут означать то, что вы пожелаете - например, то, что товар ещё не отгружается :) )
Как-то так...
И чем вам всем так готовые CRM не нравятся-то? Я же вроде уже упоминал, что, например, Бизнес-Пак в ваших условиях настроить - раз плюнуть...

Автор - AndreTM
Дата добавления - 24.01.2014 в 18:16
DAKRAY Дата: Пятница, 24.01.2014, 18:45 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Hugo, огромное спасибо!

Все четко сработало! То что нужно.
SummaVardiem() работает четко да. Возможно у Вас не работает правильно изза латышских букв, не знаю). У меня, да, Non-Unicode стоит Латвийский, так что все четко.

AndreTM, уже 10 лет так работаем, и никаких проблем. Наверное потому, что у нас в Латвии законы немного другие.)
Про номер накладной, у меня все данные копируются сначала в бланк с накладной, а уже там я вписываю номер накладной и жму свою кнопку Save, и накладная сохраняется в нужную папку с нужным именем. Наши накладные сильно отличаются от стандартных CMRок, это я в файле так условно написал. Вся система уже закончена и работает на всех компах исправно и быстро. Остался вот только этот маленький аптдэйтик, которым выручил Hugo.
 
Ответить
СообщениеHugo, огромное спасибо!

Все четко сработало! То что нужно.
SummaVardiem() работает четко да. Возможно у Вас не работает правильно изза латышских букв, не знаю). У меня, да, Non-Unicode стоит Латвийский, так что все четко.

AndreTM, уже 10 лет так работаем, и никаких проблем. Наверное потому, что у нас в Латвии законы немного другие.)
Про номер накладной, у меня все данные копируются сначала в бланк с накладной, а уже там я вписываю номер накладной и жму свою кнопку Save, и накладная сохраняется в нужную папку с нужным именем. Наши накладные сильно отличаются от стандартных CMRок, это я в файле так условно написал. Вся система уже закончена и работает на всех компах исправно и быстро. Остался вот только этот маленький аптдэйтик, которым выручил Hugo.

Автор - DAKRAY
Дата добавления - 24.01.2014 в 18:45
DAKRAY Дата: Пятница, 24.01.2014, 19:18 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Hugo, один момент. В файле примере-то у меня до таблицы и после были пустые ячейки. А в бланке с накладной до и после таблицы с позициями ячейки колонны не все пустые, и поэтому он мне вписывает где-то внизу вообще. Как указать, чтобы начинал смотреть именно с нужной ячейки.

Файл пример в приложении.
К сообщению приложен файл: 7551509.xls (46.0 Kb)
 
Ответить
СообщениеHugo, один момент. В файле примере-то у меня до таблицы и после были пустые ячейки. А в бланке с накладной до и после таблицы с позициями ячейки колонны не все пустые, и поэтому он мне вписывает где-то внизу вообще. Как указать, чтобы начинал смотреть именно с нужной ячейки.

Файл пример в приложении.

Автор - DAKRAY
Дата добавления - 24.01.2014 в 19:18
AndreTM Дата: Пятница, 24.01.2014, 21:07 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
уже 10 лет так работаем, и никаких проблем...
Про номер накладной, у меня все данные копируются сначала в бланк с накладной...
Да я сильно против-то ничего не имею :)

А по поводу - я вам и говорю, что надо "сделать наоборот", т.е. вписывать номер накладной в строку заказа; и тогда это и будет, во-первых, означать, что товар передан на отгрузку, а во-вторых, - в какую именно накладную из какого заказа попадает (или ещё не попадает) соответствуюшая строчка. А уже сформированные накладные - сохраняются. В заказе же при этом (именно при "проведении" накладной) можно для "сохранённых" отметить эти строки какими-то новыми признаками (с доп.символами, например). Чтобы эти позиции заказов больше вообще нельзя было тронуть.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
уже 10 лет так работаем, и никаких проблем...
Про номер накладной, у меня все данные копируются сначала в бланк с накладной...
Да я сильно против-то ничего не имею :)

А по поводу - я вам и говорю, что надо "сделать наоборот", т.е. вписывать номер накладной в строку заказа; и тогда это и будет, во-первых, означать, что товар передан на отгрузку, а во-вторых, - в какую именно накладную из какого заказа попадает (или ещё не попадает) соответствуюшая строчка. А уже сформированные накладные - сохраняются. В заказе же при этом (именно при "проведении" накладной) можно для "сохранённых" отметить эти строки какими-то новыми признаками (с доп.символами, например). Чтобы эти позиции заказов больше вообще нельзя было тронуть.

Автор - AndreTM
Дата добавления - 24.01.2014 в 21:07
Hugo Дата: Пятница, 24.01.2014, 21:09 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну где-то так.
И зачем две кнопки?
К сообщению приложен файл: 4887341.xls (40.5 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу где-то так.
И зачем две кнопки?

Автор - Hugo
Дата добавления - 24.01.2014 в 21:09
Wasilich Дата: Суббота, 25.01.2014, 11:45 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
И зачем две кнопки?
Ну так:
что-то из одного счета, что-то из другого
А если они у него в разных местах? А это лишь пример. Оставляю вариант с двумя кнопками и фиксацией номера строки в ячейке.
К сообщению приложен файл: DAKRAY3.xls (42.0 Kb)


Сообщение отредактировал Wasilic - Суббота, 25.01.2014, 11:46
 
Ответить
Сообщение
И зачем две кнопки?
Ну так:
что-то из одного счета, что-то из другого
А если они у него в разных местах? А это лишь пример. Оставляю вариант с двумя кнопками и фиксацией номера строки в ячейке.

Автор - Wasilich
Дата добавления - 25.01.2014 в 11:45
DAKRAY Дата: Понедельник, 27.01.2014, 13:36 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
AndreTM, tnx за совет! Но никогда не угадаешь какой номер накладной будет к тому времени, когда придется ее делать. Товар могут забрать и через месяц. Нас 5 человек, кто выписывает счета-накладные и номер накладной узнаем непосредственно перед самим сохранением накладной и ее печатью. Плюс еще у нас девушка часто резервирует некоторые номера, для своих целей.

Hugo, шикарненько! Эти галочки мне очень-очень понравились! (мм)
Но Wasilic прав, у меня же счета с разными номерами в разных файлах, и при нажатии первой кнопки, он открывает файл-бланк с накладной и закидывает не только позиции, но и реквизиты фирмы, а на второй кнопке будет только конкретные позиции в уже открытый бланк.

Wasilic, благодарю! Объединенный вариант с Hugo, меня даже больше чем удовлетворяет.
Безмерно благодарен Вам ребят! Будете в Риге, с меня вискарь!))
 
Ответить
СообщениеAndreTM, tnx за совет! Но никогда не угадаешь какой номер накладной будет к тому времени, когда придется ее делать. Товар могут забрать и через месяц. Нас 5 человек, кто выписывает счета-накладные и номер накладной узнаем непосредственно перед самим сохранением накладной и ее печатью. Плюс еще у нас девушка часто резервирует некоторые номера, для своих целей.

Hugo, шикарненько! Эти галочки мне очень-очень понравились! (мм)
Но Wasilic прав, у меня же счета с разными номерами в разных файлах, и при нажатии первой кнопки, он открывает файл-бланк с накладной и закидывает не только позиции, но и реквизиты фирмы, а на второй кнопке будет только конкретные позиции в уже открытый бланк.

Wasilic, благодарю! Объединенный вариант с Hugo, меня даже больше чем удовлетворяет.
Безмерно благодарен Вам ребят! Будете в Риге, с меня вискарь!))

Автор - DAKRAY
Дата добавления - 27.01.2014 в 13:36
Hugo Дата: Понедельник, 27.01.2014, 14:09 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Ловлю на слове. Куда подходить? :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЛовлю на слове. Куда подходить? :)

Автор - Hugo
Дата добавления - 27.01.2014 в 14:09
DAKRAY Дата: Понедельник, 27.01.2014, 16:05 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
[offtop]:D Рижанин? Я в Иманте живу. По будням занят, на выходных можем встретится, ну или в пятницу вечером сам могу в центр подъехать.[/offtop]
 
Ответить
Сообщение[offtop]:D Рижанин? Я в Иманте живу. По будням занят, на выходных можем встретится, ну или в пятницу вечером сам могу в центр подъехать.[/offtop]

Автор - DAKRAY
Дата добавления - 27.01.2014 в 16:05
Pelena Дата: Понедельник, 27.01.2014, 16:12 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 19196
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
DAKRAY, надеюсь дальнейшее обсуждение будет в личке ;)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеDAKRAY, надеюсь дальнейшее обсуждение будет в личке ;)

Автор - Pelena
Дата добавления - 27.01.2014 в 16:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставлять в таблицу выборочные строки другой таблицы (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!