powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с макросом EXCEL
9 сообщений из 9, страница 1 из 1
Проблема с макросом EXCEL
    #32145306
Alexx1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Помогите пожалуйста решить с помощью VBA следующую проблему:
в EXCEL у меня есть макрос, который обновляет данные на различных листах, соответственно когда я его запускаю получается не совсем приглядная картина: макрос бегает по листам и обновляет данные, соответственно всё прыгает и мелькает. Подскажите как сделать так чтобы EXCEL просто показал мне конечный РЕЗУЛЬТАТ работы макроса и не показывал сам процесс его работы.
И ещё вопрос: может кто знает как с помощью VBA изменить значёк EXCEL (тот который находится в левом верхнем углу) или удалить его?

Заранее спасибо.
...
Рейтинг: 0 / 0
Проблема с макросом EXCEL
    #32145321
Фотография Sinner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу первого я правильной таблетки не
знаю, но могу сказать, что делал сам
на момент такой отработки делал Excel
невидимым и соответственно никаких мельканий
а потом опять отображал, проблемы будут,
минус такого подхода когда ошибки повыскакивают...
по поводу второго не знаю
...
Рейтинг: 0 / 0
Проблема с макросом EXCEL
    #32145334
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Application.ScreenUpdating = False
...
Рейтинг: 0 / 0
Проблема с макросом EXCEL
    #32145435
Leshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто вместо Range("C10").Select и т.д., вставляй Worksheets("имя листа").Cells(номер строки, номер столбца). И делай с ячейкой все что хочешь....
Данную функцию можно применять, как слева от знака равно, так и справа, например...

Worksheets("Лист1").Cells(1,1) = 2
так и
i = Worksheets("Лист1").Cells(1,1)

Здесь никакого моргания не будет, также к Worksheets("Лист1").Cells(1,1) можно применять различные функции, что заметно уменьшит объем текста программы......
...
Рейтинг: 0 / 0
Проблема с макросом EXCEL
    #32150454
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так:

Код: plaintext
1.
2.
3.
4.
    Application.WindowState = xlMinimized

'(бегает макрос)

    Application.WindowState = xlNormal
...
Рейтинг: 0 / 0
Проблема с макросом EXCEL
    #32150683
Leshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Application.WindowState = xlMinimized

'(бегает макрос)

Application.WindowState = xlNormal


А зачем, когда по Worksheets("Лист1").Cells(1,1) = 2 ничего никогда не бегает, а только на выделенном листе красиво цифорки изменяются.........или буковки.
IMHO лишь заграмождение кода.....
...
Рейтинг: 0 / 0
Проблема с макросом EXCEL
    #32151201
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем, когда по Worksheets("Лист1").Cells(1,1) = 2 ничего никогда не бегает, а только на выделенном листе красиво цифорки изменяются.........или буковки.

Зато макрос править надо. А потом отлаживать. Вопрос времени. Да и от мелькания изменяющихся цифирок/буковок не избавиться. Хотя, конечно, это лучше чем то, что получается после простой записи...

ЗЫ. Кстати, что будет с макросом, если юзер вдруг решит поменять название с "Лист1" на "Первый Листик"??? ;о)))
...
Рейтинг: 0 / 0
Проблема с макросом EXCEL
    #32151212
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вот еще одна причина, по которой стоит использовать конструкцию

Код: plaintext
1.
2.
Application.WindowState = xlMinimized 
'(бегает макрос) 
Application.WindowState = xlNormal 



Скорость выполнения макроса будет маленько повыше. Этак раза в полтора. Только за счет того, что не надо всякую х..ню прорисовывать. Запустите такой скриптик, посмотрите сами:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Macro1()
a =  1 
b =  100000 
Application.WindowState = xlMinimized ' comment when necessary
    Do While a < b
        Worksheets("Sheet1").Cells(1, 1) = a / 100
          Worksheets("Sheet1").Cells(1, 2) = a
        a = a + 1
    Loop
Application.WindowState = xlNormal ' comment when necessary
End Sub


Имхо, есть разница - ждать минуту или полторы...
...
Рейтинг: 0 / 0
Проблема с макросом EXCEL
    #32151310
Leshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пользователь изменит наименнование листа, тогда вообще ничего не будет работать хоть с
Application.WindowState = xlMinimized

'(бегает макрос)

Application.WindowState = xlNormal

хоть без этого дела.
Если только динамически имя его не узнаешь....Что же касается, быстроты, то да, возможно, хотя когда обрабатываешь 30 000 записей, то быстрота все равно снижается.
Хотя вот странно, если несколько раз макрос запустить, то время будет снижаться, а после перезагрузки опять все встанет на свои места. Интересно, почему, вроде память не используется?
Правка кода: мои письмена предназначены прежде всего тем, кто будет писать, чтобы не делали наших ошибок.
А мелькание становиться другим, они просто изменяются, а не выделяются курсором-изменяются, так что так такового мелькания нет.
А если пользователь захочет узнать какие сейчас текущие значения, или например, какую строку сейчас обрабатывает макрос. В моем варианте все показывается, притом самым наилучшим образом, а в вашем даже нельзя зайти в EXCEL. К тому, при работе с большим количеством строк и сложности алгоритма EXCEL любит висеть, и не известно, что мы делаем висим, или все же работаем.
Скажете, что можно и по CTRL+ALT+DEL и смотри запущенные приложения, только вот иногда эта штука хорошо врет.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с макросом EXCEL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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