Здравствуйте, коллеги. Для проведения расчётов и их визуального контроля в режиме реального времени мною написано приложение в Excel (на одном листе) с использованием достаточного количества формул, нескольких макросов и стандартных элементов управления (кнопки, счётчики, полосы прокрутки, текстовые поля ActiveX), а также с применением условного форматирования ячеек (выделение по цвету, гистограммы, наборы значков и т. п.). При этом для вычислений используются импортируемые данные (обновление - каждую секунду). Проблема заключается в том, что с течением времени, через некоторый период успешной работы (5-10 минут), Excel зависает и появляется окно с сообщением "Недостаточно системных ресурсов для полного вывода на экран". Вместе с тем, согласно информации в Диспетчере задач, программа потребляет немного ресурсов: лишь около 5% ЦП и 100 Мб ОЗУ. Должен добавить, что в процессе работы, кроме Excel (Office 2013, лицензионная версия) и платформы, откуда импортируются данные, иные приложения мною не запускаются, а сам компьютер весьма мощный: ОС Windows 8.1, процессор Intel Core i7 2.4 GHz, оперативная память 16 Гб. Прошу, по возможности, подсказать как исключить зависание Excel?
Здравствуйте. Прошу подсказать: есть ли способ поиска текста в фигурах (прямоугольник, треугольник и т. п.)? Или функция "Найти и заменить" актуальна только для поиска текста в ячейках? Буду признателен за конструктивный совет.
Здравствуйте. Прошу поделиться функциями, а также приёмами, которые помогают ускорить выполнение макросов. К примеру, чтобы экран не обновлялся при каждом исполнении процесса, я использую строку:
Код
Application.ScreenUpdating = False
Какие ещё желательно добавить строки в VBA-код, чтобы убыстрить, в целом, работу Excel-приложения?
Здравствуйте. Прошу, по возможности, подсказать, как прописать в макросе Excel следующие две задачи: 1. Закрыть стороннее приложение без сохранения. 2. Открыть стороннее приложение, требующее ввода логина и пароля.
В процессе автономной работы Excel-приложения периодически возникают ошибки вида "Run-time error" (пример во вложенной фотографии) - из-за этого останавливается выполнение макросов и всего файла в целом. После нажатия кнопки "End" на всплывающем окне всё нормализуется до следующего появления подобной ошибки.
Прошу вас, по возможности, уточнить: можно ли как-то прописать в макросах, VBA-коде книги или листов универсальную команду, чтобы при появлении подобных и любых других ошибок они автоматически обрабатывались и работа Excel не прекращалась?
Прошу посоветовать как корректнее записать формулу для идентификации строки в массиве данных А:B: если появляется строка, где в столбце А значение "HELP", а в столбце B значение "YES", то пуск, иначе стоп.
Пробовал решить задачу с помощью ВПР(), но неудачно:
Код
=ЕСЛИ(ВПР("HELP";A:B;2;ЛОЖЬ)="YES";пуск;стоп)
Вся проблема в том, что "HELP" встречается в столбце A много раз и каждый раз ему могут соответствовать разные значения из столбца B (например, "NEVER", "MAYBE", "NO" и т. д.). К сожалению, ВПР() анализирует не все, а только лишь первое появление "HELP" в столбце A.
Здравствуйте, прошу подсказать, как в макросе Auto_Open() прописать автоматическую смену раскладки клавиатуры на английскую при открытии файла, если раскладка до открытия файла была русской? Я пробовал с помощью Application.SendKeys ("%+" ;) , но в этом случае если раскладка до открытия файла была английской, то при его открытии она становится русской. А нужно, чтобы если раскладка английская, то оставалась таковой и не менялась. То есть задача состоит в том, чтобы после открытия файла раскладка клавиатуры в любом случае была английская, независимо от предшествующей раскладки.
Здравствуйте. Прошу посоветовать по следующему вопросу: не удаётся считать (1, 2, 3, 4, 5...) количество выполнения условия в ячейке. Итак, в ячейке A1 согласно заданной формуле (то есть не вводом вручную, а в фоновом режиме) появляются различные значения. Нужно, чтобы при каждом появлении в этой ячейке значения "Взлёт", значение в другой ячейке B1, начиная с 1, изменялось на один порядковый номер (то есть становилось 2, 3, 4, 5, 6 и т. д.) 1. Пытался найти решение, перебирая всевозможные формулы, но выдаётся ошибка о циклической ссылке. 2.1. Пытался решить задачу макросом (привожу ниже), но в этом случае при наступлении в ячейке А1 ожидаемого события, значение в ячейке B1 увеличивается на единицу (то есть текущее значение + 1) не один раз, а бесконечное количество...
Код
Private Sub Worksheet_Calculate()
If [A1] = "Взлёт" Then Call Vzlet_counter
End Sub
Sub Vzlet_counter()
Application.EnableEvents = False
Range("B1")= Range("B1") + 1
Application.EnableEvents = True
End Sub
2.2. Пробовал этот же макрос, но уже с Worksheet_Change(ByVal Target As Range), однако такое решение тоже не работает, так как ячейка A1 изменяется не вручную, а автоматически с помощью формулы с условием ЕСЛИ().
Таким образом, получается, что: Worksheet_Change(ByVal Target As Range) не видит изменений в ячейке А1, а Worksheet_Calculate() их видит, но начинает увеличивать счётчик в ячейке B1 до бесконечности (к сожалению, Application.EnableEvents = False почему-то не спасает от бесконечного исполнения макроса). Возможно ли решить задачу?