powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel: Как макрос написать
8 сообщений из 8, страница 1 из 1
Excel: Как макрос написать
    #33002123
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый,

задачка такая есть шаблон ( бухгалтерский )
в нем табличка примерна такая:
Код: plaintext
1.
2.
3.
4.
    A                  B        C
 1  услуга1           0          0 
 2  услуга2           1          2 
 3  услуга3           1          0 

данные в колонки B и C вставляются некой программой которая на выходе выдает
файл в формате excel, хочется чтобы строки в который колонки B C равны 0 не выводились.

Алгоритм примерно такой
проверим сумму колонок В и С для каждой строки ( услуга ) и если их сумма равна 0
то изменим длину строки ( в которой сумма равна 0 ) в 0. Тесть чтобы получить примерно сл:
Код: plaintext
1.
2.
3.
    A                  B        C
 2  услуга2           1          2 
 3  услуга3           1          0 

Вопрос собственно как это реализовать на VBA для excel ?
...
Рейтинг: 0 / 0
Excel: Как макрос написать
    #33002131
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибка:
изменим _ВЫСОТУ_ строки в 0
...
Рейтинг: 0 / 0
Excel: Как макрос написать
    #33002666
kanalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Hide()
    i =  1 
    While Range("A" & i).Text <> ""
        If Range("B" & i).Value + Range("C" & i).Value =  0  Then
            Rows(i & ":" & i).Select
            Selection.EntireRow.Hidden = True
        End If
        i = i +  1 
    Wend
End Sub
...
Рейтинг: 0 / 0
Excel: Как макрос написать
    #33002795
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое, то что надо ( правда while поменял на for но это фигня )

Такой еще вопрос - я назвал процедуру Autoexec, такая трабла - когда этот файл запускается другим приложением ( тоесть в нем давится кнопка - сгенерировать отчет, после чего запускается ексель с этим файлом ), то Autoexec не отрабатывается, если просто загрузить из екселя данный документ то все ОК.
Хочется собственно чтоб и в первом случае отрабатывал autoexec

Такое возможно ?
...
Рейтинг: 0 / 0
Excel: Как макрос написать
    #33003536
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik2, называй, пожалуйста, темы более конкретно.
Потом поиск по темам с таким названием - один геморрой.
...
Рейтинг: 0 / 0
Excel: Как макрос написать
    #33003839
kanalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik2Спасибо большое, то что надо ( правда while поменял на for но это фигня )
Если количество строк всегда одинаковое, то можно и так:)

nik2Такой еще вопрос - я назвал процедуру Autoexec, такая трабла - когда этот файл запускается другим приложением ( тоесть в нем давится кнопка - сгенерировать отчет, после чего запускается ексель с этим файлом ), то Autoexec не отрабатывается, если просто загрузить из екселя данный документ то все ОК.
Хочется собственно чтоб и в первом случае отрабатывал autoexec

Такое возможно ?
Наверное, надо вставить этот код в событие Workbook_Open()...
Попробуйте.
...
Рейтинг: 0 / 0
Excel: Как макрос написать
    #33011608
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik2Такой еще вопрос - я назвал процедуру Autoexec, такая трабла - когда этот файл запускается другим приложением ( тоесть в нем давится кнопка - сгенерировать отчет, после чего запускается ексель с этим файлом ), то Autoexec не отрабатывается, если просто загрузить из екселя данный документ то все ОК.
Хочется собственно чтоб и в первом случае отрабатывал autoexec

Такое возможно ?
Нет, невозможно. Автостартующие макросы на самом деле запускаются процедурой открытия книги.
Если ты открываешь свою книгу из VBA через Workbooks.Open или даже через OLE, ты должен сам запустить Workbook_Open или Auto_Exec. Так сделано специально и упомянуто в документации.
Смотри самый низ описания метода Workbooks.Open():
Excel Help Remarks

If the workbook being opened has any Auto_Open macros in it, they won’t be run when you open the file from Visual Basic. If you want to run the Auto_Open macro, you must use the RunAutoMacros method.
...
Рейтинг: 0 / 0
Excel: Как макрос написать
    #33011720
kanalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl nik2Такой еще вопрос - я назвал процедуру Autoexec, такая трабла - когда этот файл запускается другим приложением ( тоесть в нем давится кнопка - сгенерировать отчет, после чего запускается ексель с этим файлом ), то Autoexec не отрабатывается, если просто загрузить из екселя данный документ то все ОК.
Хочется собственно чтоб и в первом случае отрабатывал autoexec

Такое возможно ?
Нет, невозможно. Автостартующие макросы на самом деле запускаются процедурой открытия книги.
Если ты открываешь свою книгу из VBA через Workbooks.Open или даже через OLE, ты должен сам запустить Workbook_Open или Auto_Exec. Так сделано специально и упомянуто в документации.
Смотри самый низ описания метода Workbooks.Open():
Excel Help Remarks

If the workbook being opened has any Auto_Open macros in it, they won’t be run when you open the file from Visual Basic. If you want to run the Auto_Open macro, you must use the RunAutoMacros method.


Тогда это должна быть надстройка, которая будет реагировать на открытие/создание документа с определенным именем... Ведь внешняя программа просто создает новый файл и пихает туда данные, т.е. новый файл создается не на основе какого-то шаблона. Надо создать надстройку, которая будет реагировать на такое событие.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel: Как макрос написать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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