|
Плиз хелп
|
|||
---|---|---|---|
#18+
Есть такая проблема: Несколько пользователей заполняют лист в книге назовем его "Отчет" форма его одинаковая для всех и сдают помесячно (в этой книге есть и другие листы) Также существует итоговая книга Как создать макрос чтобы данные из выбранных книг только с листа "Отчет" копировались в мастер-книгу на лист "Отчет" друг за другом без шапки... Форум листал долго но не могу подогнать примеры под себя точнее интересует как сделать чтобы друг за другом добавлялись и не трогали предыдущие ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 17:09 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
1) Неверное название топика, думаю многие даже заходить не будут. 2) Информации на форуме действительно много Например так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 17:40 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
я этот я зык еще плохо знаю можно как нить попроще для чайников ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 15:30 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
Deggasad Добрый день скажи, каким всё-таки способом надо, или лучше, определять последнюю строку методом Find(What:="*", как в твоей функции LastRow или так Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 15:42 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
klen_Deggasad Добрый день скажи, каким всё-таки способом надо, или лучше, определять последнюю строку методом Find(What:="*", как в твоей функции LastRow или так Код: plaintext 1. 2.
В отсутствие Deggasad, если позволишь... :-) Думаю, что не существует реально надежного/универсального метода определения последней строки, у всех есть слабые стороны: 1) UsedRange - включает как заполненные ячейки, так и пустые, но с форматированием - не всегда автоматически обновляется после удаления строк 2) SpecialCells(xlCellTypeLastCell) - включает как заполненные ячейки, так и пустые, но с форматированием - не всегда автоматически обновляется после удаления строк 3) Find(What:="*"... - дает неверный результат в случае со слитыми ячейками в конце диапазона 4) End(xlDown) - действует только в одном столбце - дает последнюю строку только в непрерывном списке 5) End(xlUp) - действует только в одном столбце KL [MVP - Microsoft Excel] ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 16:00 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
klen_Deggasad Добрый день скажи, каким всё-таки способом надо, или лучше, определять последнюю строку методом Find(What:="*", как в твоей функции LastRow или так Код: plaintext 1. 2.
Я не спец, учился в основном на этом форуме и на практических задачах, и книжек особо не читал (да простят меня форумяне), это я к тому что я судить не могу про то что лучше. Но по простому попытаться подумать: С UsedRange - нужно найти этот UsedRange - посчитать в нём количество строк - потом определится с первой строкой - и вычислить Тем более UsedRange он же ведь включает и ячейки без значений, а просто отформатированные и даже после того как формат убрали. Т.е. если внизу где-нить затесалась ячейка которая была когда-то выделена цветом или обрамлена, то она вполне попадает в UsedRange и даёт ошибочный результат. из-за одного этого я бы не стал пользоваться этим методом. В свою очередь метод Find с параметром SearchDirection:=xlPrevious делает следующее начинает смотреть в указанном диапазоне в обратном порядке, т.е. с первой ячейки и назад на последнюю - прямиком к цели (не проверял, но по-моему быстрее должно быть) А уж насколько более широкие возможности у Find я уже вроде рассказывал - можно в определённом диапазоне, можно в ячейке искать, можно Range сразу возвращать, что очень удобно для дальнейшего использования в коде. Есть ещё один способ быстро найти последнюю заполненную строку, которым удобно пользоваться для одного столбца: Например для столбца B Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 16:14 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
Я не тормоз, меня просто без конца дёргают! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 16:16 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
Большущее всем спасибо и Deggasad и KL (XL) я учусь в основном на этом форуме С уважением Игорь ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 16:24 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
KL (XL) 1) UsedRange - включает как заполненные ячейки, так и пустые, но с форматированием - не всегда автоматически обновляется после удаления строк 2) SpecialCells(xlCellTypeLastCell) - включает как заполненные ячейки, так и пустые, но с форматированием - не всегда автоматически обновляется после удаления строк 3) Find(What:="*"... - дает неверный результат в случае со слитыми ячейками в конце диапазона 4) End(xlDown) - действует только в одном столбце - дает последнюю строку только в непрерывном списке 5) End(xlUp) - действует только в одном столбце KL [MVP - Microsoft Excel] 1),2) Абсолютно согласен 3) - Ну это если только слитые ячейки не все попадают в выделенных диапазон, насколько я понимаю? Если так то: во превых, это никак не влияет если мы ищем на всём листе, как в случае с UsedRange (для сравнения); Во вторых ты сам говорил, что слияние ячеек вообще самая глюченая фигня и её впринципе не нужно использовать, тем более не представлю себе чтобы внизу диапазона, или на крайний случай отменять перед выполненем макроса, чтобы глюков не было. 4) зачем если есть пункт 5) 5) Так это и используется в тех случаях, когда нужно для одного столбца. Я бы это назвал не недостатком, а скорее сферой применения. З.ы. напоследок забавная история: Давали мне одну програмулину, довольно приличная (по объёму), много труда вложено, много кода, много людей ею пользуются, так вот там последняя строка знаете как определялась. Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 16:32 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
encyя этот я зык еще плохо знаю можно как нить попроще для чайников Знаешь я как раз попроще и сделал вроде, постарался ввести все переменные которые может потребоваться поменять, сделал краткие описания, не использовал сложных методов. Примерно с такого кода (2 модуля и 1 функция) и с такими же краткими объяснениями начиналось моё изучение VBA (товарищ помог сделать первую выборку из 60 книг, я честно говоря был шокирован, а прошло с того времени меньше года, щас сам многим помогаю, так что дерзайте). Правда этот пример я делал уже давно, сейчас бы наверное я по другому сделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 16:46 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
encyа мне то что делать?изучи код, что Deggasad нарисовал, там коментариев полно начни хотя бы посстрочно разбирать С уважением Игорь ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2007, 16:57 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
А что, если ловить данные снизу? Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2007, 16:17 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
А ты предыдущие посты читал??? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2007, 17:07 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
DeggasadKL (XL) 1) UsedRange - включает как заполненные ячейки, так и пустые, но с форматированием - не всегда автоматически обновляется после удаления строк 2) SpecialCells(xlCellTypeLastCell) - включает как заполненные ячейки, так и пустые, но с форматированием - не всегда автоматически обновляется после удаления строк 3) Find(What:="*"... - дает неверный результат в случае со слитыми ячейками в конце диапазона 4) End(xlDown) - действует только в одном столбце - дает последнюю строку только в непрерывном списке 5) End(xlUp) - действует только в одном столбце KL [MVP - Microsoft Excel] 1),2) Абсолютно согласен 3) - Ну это если только слитые ячейки не все попадают в выделенных диапазон, насколько я понимаю? Если так то: во превых, это никак не влияет если мы ищем на всём листе, как в случае с UsedRange (для сравнения); Во вторых ты сам говорил, что слияние ячеек вообще самая глюченая фигня и её впринципе не нужно использовать, тем более не представлю себе чтобы внизу диапазона, или на крайний случай отменять перед выполненем макроса, чтобы глюков не было. 4) зачем если есть пункт 5) 5) Так это и используется в тех случаях, когда нужно для одного столбца. Я бы это назвал не недостатком, а скорее сферой применения. З.ы. напоследок забавная история: Давали мне одну програмулину, довольно приличная (по объёму), много труда вложено, много кода, много людей ею пользуются, так вот там последняя строка знаете как определялась. Код: plaintext 1. 2. 3. 4.
Поправочка по поводу "забавной истории" идет подсчет "не пустых" ячеек, а не нахождение последней строки. Если в комментариях было указано, что этот кусок находит последнюю строку, тогда забавно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2009, 15:47 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
cbetji0taDeggasad З.ы. напоследок забавная история: Давали мне одну програмулину, довольно приличная (по объёму), много труда вложено, много кода, много людей ею пользуются, так вот там последняя строка знаете как определялась. Код: plaintext 1. 2. 3. 4.
Поправочка по поводу "забавной истории" идет подсчет "не пустых" ячеек, а не нахождение последней строки. Если в комментариях было указано, что этот кусок находит последнюю строку, тогда забавно. 1) А для того чтобы понять зачем это не обязательно писать комментарии :) 2) Подсчет непустых ячеек можно сделать 10 более быстрыми способами 3) И наконец ДА, этот подсчет делался в этом файле для определения строки до которой нужно брать диапазон, т.е. последней заполненной строки. Причем не один раз а повсеместно в файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2009, 08:45 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
Код: plaintext
Помогите разобраться в чем ошибка. У меня в одном и том же модуле формы Код: vbnet 1. 2. 3. 4. 5.
СЧИТАЕТ НА 2 (ДВЕ!!!) ячейки больше - причем я для проверки делаю Активате данного диапазона - он его правильно показывает но вместо 6 ячеек - считает 8 НО и это еще НЕ ВСЕ в том же модуле: Код: vbnet 1. 2. 3.
Вообще считает = 1 Что может мешать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 13:41 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
Vitaliy Sahno Код: plaintext
Помогите разобраться в чем ошибка. У меня в одном и том же модуле формы Код: vbnet 1. 2. 3. 4. 5.
СЧИТАЕТ НА 2 (ДВЕ!!!) ячейки больше - причем я для проверки делаю Активате данного диапазона - он его правильно показывает но вместо 6 ячеек - считает 8 НО и это еще НЕ ВСЕ в том же модуле: Код: vbnet 1. 2. 3.
Вообще считает = 1 Что может мешать? Diapazon имеет тип данных Variant, хотя маловероятно, что причина в этом, возможно ячейки не совсем пустые? Было бы здорово взглянуть на файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 14:16 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
Увы для того чтобы Вы увидели надо высылать оба файла и слишком много кода, чтобы в нем разбираться. Проще все-таки Код: vbnet 1. 2. 3. 4.
[/SRC] next i чем ловить ошибку!!! Тем более у меня строк будет максимум 1000 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 16:26 |
|
Плиз хелп
|
|||
---|---|---|---|
#18+
Vitaliy SahnoУвы для того чтобы Вы увидели надо высылать оба файла и слишком много кода, чтобы в нем разбираться. Проще все-таки Код: vbnet 1. 2. 3. 4.
[/SRC] next i чем ловить ошибку!!! Тем более у меня строк будет максимум 1000 Можно скопировать лист с данными и кусок проблемного кода и выложить только их. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 16:30 |
|
|
start [/forum/topic.php?fid=61&msg=34732842&tid=2172616]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 285ms |
total: | 448ms |
0 / 0 |