0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6
1

Vba перемещает первую строку в excel

05.08.2015, 20:08. Показов 1114. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помощи в вопросе. Есть большая таблица в excel, около 200 тыс. строк, по которой ежедневно нужно выводить журнал в отдельный файл. Я написал макрос, все работает, но при одних и тех же данных первая строка с названиями столцов может переместиться после выполнения макроса куда-нибудь в середину таблицы. Исходную таблицу код только считывает, но не должен менять. Может кто знает возможную причину?

В начале кода идет объявление переменных, поиск индекса необходимых столбцов по их названию (т.к. могут меняться) и цикл по отфильтрованному диапазону. В цикле необходимые данные выводятся в другую рабочую книгу.
Макрос в приложении. MS Office 2010
Миниатюры
Vba перемещает первую строку в excel   Vba перемещает первую строку в excel  
Вложения
Тип файла: txt mm.txt (10.8 Кб, 5 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2015, 20:08
Ответы с готовыми решениями:

Textbox с multiline не перемещает курсор на первую строку
Использую многострочный текстбокс для отправки пользовательской инфы. После нажатия ctrl+enter...

TextBox с multiline не перемещает курсор на первую строку
Всем привет! Я использую текст бокс с мультилайном, в нем такой код: private void...

Выделить первую строку текста в ячейке средствами VBA
Уважаемые форумчане! Подскажите пожалуйста, как с помощью VBA выделить (скопировать) первую...

Datagridview не отображает первую строку Excel файла
Всем привет. Собственно, проблема написана в названии темы. У меня в программе можно открыть...

9
Модератор
Эксперт MS Access
11956 / 4824 / 779
Регистрация: 07.08.2010
Сообщений: 14,128
Записей в блоге: 4
05.08.2015, 21:09 2
Visual Basic
1
Set cel = Log.Rows(1).Cells.Find("ISO", , , xlWhole)
не нашла , что такое Log
макрос работать не хочет
а угадывать, что должно сформироваться --не хочется




=========
видимо не помешало бы приложить ексель файл
зазипуйте, чтобы не ругался интернет
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6
05.08.2015, 21:17  [ТС] 3
Прошу прощения, упустил. Log страница исходной книги.
Visual Basic
1
2
3
4
5
6
7
Set jur_wb = Workbooks.Open(ThisWorkbook.Path & "\ab\a.xlsx")
Set jur = jur_wb.Sheets(1)
Set wm = ThisWorkbook.Sheets("WM")
Set welders_list = ThisWorkbook.Sheets("welders_list")
Set log = ThisWorkbook.Sheets("VCC LOG")
Set pwht = ThisWorkbook.Sheets("pwht")
Set style = ThisWorkbook.Sheets("style")
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6
05.08.2015, 21:28  [ТС] 4
Полная таблица слишком большая, около 400 МБ, да и данные к сожалению не смогу скинуть, т.к. информация закрытая. Во вложении небольшой пример исходной таблицы и полный макрос.
Вложения
Тип файла: xlsx small_WM.xlsx (24.7 Кб, 2 просмотров)
Тип файла: txt mm2.txt (14.6 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6
30.09.2015, 17:21  [ТС] 5
Вопрос решился после того как переписал полностью макрос. Причину так и не понял.
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
01.10.2015, 09:03 6
Потенциально ошибка может скрываться например тут:
Visual Basic
1
xe = wm.Cells(Rows.Count, 4).End(xlUp).Row
Чьи это Rows? И соответственно сколько их?
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6
01.10.2015, 11:30  [ТС] 7
А почему? Там же просто присваивается переменной количество строк в листе wm. А количество около 200 тысяч
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
01.10.2015, 11:44 8
Там не указан лист! Поэтому количество возьмётся из активного, а он может быть двух видов!
И раз 200 тысяч, а не 200 - то как раз и может быть брачок.
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6
01.10.2015, 11:49  [ТС] 9
VB.NET
1
xe = wm.Cells
- не означает разве ячейки в листе wm? wm изначально объявлен как лист.
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
01.10.2015, 12:04 10
ЯчейкА - да. Но не количество строк.

Добавлено через 8 минут
Visual Basic
1
xe = wm.Cells(Rows.Count, 4).End(xlUp).Row
Напишу код словами:
переменной xe задаём значение строки ячейки листа wm, которая первая занятая вверх от ячейки листа wm с координатами (количество строк, 4)
Количество строк не указано от какого листа брать, значит берём от активного в данный момент.
0
01.10.2015, 12:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2015, 12:04
Помогаю со студенческими работами здесь

Вставить строку на VBA Excel
Здраствуйте!!) Помогите пожалуйста! Что то явно не так делаю в общем у меня в Книге в Excel две...

Как получить строку гиперссылки в VBA Excel
В ячейке “A2” Exel таблицы, находится рабочая гиперссылка, которая хорошо видна, если к ней...

Как выделить последнюю строку в ListView (VBA Excel)?
Как выделить последнюю строку в ListView (VBA Excel)?

Как скопировать в Excel ч/з VBA целый лист или строку...
Как скопировать в Excel ч/з VBA целый лист или строку в новую книгу?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru