Здравствуйте! Возможно, кто-то сталкивался с подобной проблемой и сможет подсказать решение. Варианты вроде «установить другую версию Office» не рассматриваются. Описание проблемы: После запуска и остановки макроса в редакторе VBA размеры UserForm и всех её элементов самопроизвольно уменьшаются (искажаются). Точный триггер этого поведения определить не удаётся — проблема возникает хаотично. Пример сценария: 1. Запускаю код → останавливаю его → возвращаюсь в редактор → форма и элементы уже стали меньше. 2. При дальнейшей работе размер может уменьшиться ещё сильнее, и при следующем запуске форма отображается в уменьшенном виде. Временное решение: - Чтобы вернуть исходный вид, достаточно немного подвигать границы формы в редакторе VBA — после этого все элементы мгновенно принимают правильные размеры. - Начал принудительно задавать размер UserForm при запуске. Дополнительные наблюдения: - Если в проекте несколько форм, проблема затрагивает их тоже. - Ошибка воспроизводится в Microsoft Office Professional Plus 2021 (установленная). - Переустановка Office не помогла. - В других версиях Office (например, 2016 или 2019) такого поведения не замечено, но данных недостаточно для точного вывода. Вопрос: Есть ли способ исправить это поведение без смены версии Office? Возможно, есть настройки или скрытые параметры, влияющие на масштабирование форм?
Здравствуйте. Ранее можно было видеть какие пользователи в настоящий момент времени просматривают ту или иную тему форума. Можно ли это вернуть или включить в настройках?
Приветствую. Подскажите, пож-та, бесплатный антивирус для ПК, который сейчас нормально работает в РФ без блокировки (ограничений). За исключением Kaspersky и Microsoft Defender. ))
Здравствуйте. Пока делал макрос, тема куда-то исчезла и я не запомнил имени ТС. )))
Если вопрос актуален и ТС найдется, то решение во вложении.
Что нужно было сделать: При нажатии на кнопку проверить в заданной папке наличие имен файлов из столбца "A" и проставить статус Есть/Нету и ещё пару действий, которые описаны в самом файле.
Здравствуйте. Подскажите, пож-та, почему на ПК с Office 2021(x64) некорректно работают Элементы ActiveX размещенные на Листе Excel? На примере кнопки не происходит явного события клика (или нажатия мышкой). На примере ComboBox не получается установить курсор в поле для ввода. Если кликнуть по ComboBox и начать что-то вводить, то ввод данных не виден и курсор в поде ввода не устанавливается, но если затем выбрать любую ячейку листа, то введенный текст появляется. Так же и с выпадающим списком, при выборе одного из выпадающих элементов ничего не происходит, но как только производишь клик в любой ячейке листа, в поле ComboBox сразу появляется выбранный текст из списка. На двух других ПК с Office 2021(x86) и Office 365(x86) всё работает нормально на одном и том-же файле.
Офис пробовал обновлять до последней версии, переустанавливал и искал причину в интернете. Действия с этого сайта не помогли: ЭЛЕМЕНТЫ ACTIVEX ПЕРЕСТАЛИ РАБОТАТЬ ИЛИ ВЕДУТ СЕБЯ НЕПРЕДСКАЗУЕМО Режим Конструктора на вкладке Разработчик, после добавления Элемента ActiveX отжимаю.
В примере особого смысла нет, т.к. файл на x64 работает некорректно, а на x86 правильно.
Здравствуйте. Тема довольно заезженная и поиск по форуму выдаёт множество похожих результатов, но которые попадались - это не совсем то что нужно. Прошу помочь в решении конкретно моей задачи с использованием VBA. Необходимо найти оптимальную комбинацию чисел составляющих сумму указанную в столбце "A" из имеющегося массива в столбце "C" по принципу задействования наименьшего количества чисел из массива с максимальным их значением от меньшего к большему.
Здравствуйте. Подскажите, пож-та, как средствами VBA можно сравнить две строки на максимальноесовпадение идущих подряд символови получить количество этих символов и само совпадение? Регистр не учитывать. Вроде тема заезженная и недавно было что-то похожее. Попытался найти через поиск, но всё как-то не то или рядом. Прошу помощи. Пример во вложении и наглядно на скриншоте.
Здравствуйте. Подскажите, пож-та, как при нажатии на зеленые кнопки в файле-примере открыть редактор кода VBA в нужном месте (в начале заданной процедуры макроса)? Если не ошибаюсь, то это делается через гиперссылки типа "file:///Путь к фйлу.xlsm - Module1.Макрос2", но не могу найти как именно.
Добрый день. Помогите, пож-та, разобраться с вопросом удаления пустых строк на листе. Для удаления использую замечательный макрос Николая Павлова, но он удаляет не все строки. Подсознательно понимаю, что значения каких то ячеек не соответствует условию макроса, но немого разобраться каких и какое значение. На первый взгляд все ячейки пустые, но строка не удаляется. В приложенном примере пометил пустые строки заливкой. Зеленые - удаляются, красные почему-то нет. Как исправить условие для удаления всех пустых строк? (Проверять по отдельности каждую ячейку строки на .value="" или .text="" в цикле слишком долго, т.к. объем может быть довольно большой).
Dim r As Long, rng As Range
'удаляем пустые строки
For r = 1 To ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
If Application.CountA(Rows(r)) = 0 Then
If rng Is Nothing Then Set rng = Rows(r) Else Set rng = Union(rng, Rows(r))
End If
Next r
If Not rng Is Nothing Then rng.Delete
Здравствуйте. В ячейке "B1" имеется формула или ссылка на другую ячейку. Значением "Value" этой формулы является некий текст. Возможно ли средствами VBA выделить часть текста другим цветом в ячейке "B1" не превращая формулу в значение? К примеру "В лесу родилась ёлочка" выделить красным шрифтом слово "родилась". Если возможно, подскажите, пож-та, как. В файле-примере получается это сделать только в ячейке с текстом, без формулы.
Здравствуйте. Проект защищен паролем который известен, 1234 (взламывать ничего не нужно). Нужно по нажатию на кнопку удалить модуль из проекта. Без пароля всё получается (код в примере).
После получения текста планируется сверка номера, в данном случае "ЕАЭС N RU Д-LK.РА04.В.14931/23". Но с этим уже проблем не возникнет, главное получить текст, в котором этот номер присутствует.
Через CreateObject("InternetExplorer.Application") не получилось. Internet Explorer открывается, но загрузка содержимого не происходит. Нужен другой способ.
Здравствуйте. Подскажите, пож-та, как можно быстро переменным присвоить значения из таблицы. Шапка, выделенная желтым полностью совпадает с именами переменных. Количество столбцов большое и может меняться. Столбцы могут добавляться/удаляться в любом месте таблицы. В итоге переменным, совпадающим с именем в шапке таблицы, должно быть присвоено значение буквы столбца на момент запуска программы. Сейчас присваиваю значение в ручную вот так для каждой переменной:
Код
Sub Peremen()
Dim Pr1, Pr2, Psr1, Pr3, Dfg, Hdfr1, Hdfr2, Hdfr5 As String
Pr1 = "A"
Pr2 = "B"
Psr1 = "C"
Pr3 = "D"
Dfg = "E"
Hdfr1 = "F"
Hdfr2 = "G"
Hdfr5 = "H"
'и так в ручную для вех столбцов
End Sub
Здравствуйте. По ссылке, с доступом для редактирования, на Google Диске находится файл Excel. Подскажите, пож-та код, как средствами VBA можно записать данные (к примеру "АБВ") в ячейку "A1" активного листа этого файла?
Условия выполнения: Если в ячейке "C1" содержится "AAA", то в ячейке "B1" записать "AAA", а если в ячейке "C1" содержится "BBB", то в ячейке "B1" записать "BBB" Регистр может отличаться, поэтому дополнительно использую функцию ПРОПИСН($C1). Пример во вложении.
Здравствуйте. Имеется несколько запущенных экземпляров Excel со своими книгами открытыми из разных программ. Подскажите, пож-та, как создать цикл по всем имеющимся экземплярам Excel, чтобы собрать имена всех открытых книг в столбец "A" ThisWorkbook?
Здравствуйте. Програмно в новом экземпляре Excel.Application открываю книгу на сетевом диске и меняю в ней данные. Далее нужно сохранить, но перед этим проверить, не открыта ли она кем то ещё. Если файл не занят другим пользователем - сохраняю, если занят закрываю без сохранения. Пользователей, которые последовательно открывают может быть много. Подскажите, пож-та, код такой проверки.
Код
Dim xlApp As Object, xlWorkbook As Object
Set xlApp = CreateObject("Excel.Application")
Set xlWorkbook = xlApp.Workbooks.Open("C:\path\workbook.xlsm")
Здравствуйте. Имеются две таблицы. На листе "Data" - исходная таблица , на "Листе2" - таблица, в которую периодически программно копируются (добавляются в низ) данные из исходной таблицы. Данные переносятся не все, только имеющие определенный "Номер идентификатор" и из определенных столбцов в шапке (по названию шапки видно). Таблицу "Data" с исходными данными заполняют разные пользователи и иногда часть данных, которые были внесены ранее и уже скопированы на Лист2, может быть изменена. Для наглядности выделил такие ячейки зелёным. Вопрос: Подскажите, пож-та, идею или алгоритм, как можно программно, при использовании VBA, отследить изменение этих данных в исходной таблице "Data" чтобы затем в нужных строках(ячейках) откорректировать на "Листе2"? Связка таблиц через столбец "A". Если подсказка будет с кодом, то вообще супер.
Реальные таблицы имеют большое количество строк около 30000 (и это не предел) и существенно больше столбцов. Данные, которые изменили уже после добавления информации на Лист2, для наглядности подсветил зеленым. На самом дели подсветки нет, поэтому к цвету привязываться нельзя. Лист2 будет находится в отдельной книге на сетевом ресурсе. Данные в ячейках разнообразные по типу и содержимому (может поменяться как несколько букв, так и полностью вся ячейка вплоть до удаления информации).
Можно циклом перебирать каждую ячейку и сравнивать, но этот вариант не подходит на большом объеме.
Добрый день. Подскажите, пож-та, почему у меня в приложении Excel (и в других приложения Microsoft Office, таких ка Word, Outlook) значки на панели быстрого доступа бесцветные, если панель размещена над лентой. У меня так в Office 16, 19, 21 и 365 и возможно было и в более ранних версиях. Как сделать чтобы эти значки были цветными, как у Павла Коган из видео по ссылке (содержание самого видео не имеет отношения к данной теме, только панель быстрого доступа из показанного приложения Excel). У него панель быстрого доступа, так же размещена над лентой только значки цветные. Ссылка на видео Моё приложение Скрин из видео
Здравствуйте. Подскажите, пож-та, как при помощи VBA получить значение неповторяющихся ячеек в столбце и посчитать их количество. В примере под таблицей указал какие данные из столбцов нужно выбрать. Имеется нюанс - часть строк скрыто фильтром (или фильтрами). Данные нужно получить из видимого диапазона SpecialCells(xlCellTypeVisible).
Добрый вечер. Подскажите, пож-та, можно ли получить в переменную текст последней непустой строки текстового файла методом, отличным от циклического перебора строк?
Известно как быстро посчитать кол-во строк:
Код
Dim iText As String, strfile As String
Dim kolstrok As Long
myFile = FreeFile
Open ("C:\Пример.txt") For Input As #myFile
iText = Input(LOF(1), #myFile)
kolstrok = UBound(Split(iText, vbNewLine)) + 1 'Количество строк в текстовом файле
Close #myFile
Известно как получить текст последней строки циклом:
Код
Open ("C:\Пример.txt") For Input As #myFile
Do While Not EOF(myFile)
Line Input #myFile, strfile
If strfile <> "" Then iText = strfile 'Текст последней непустой строки
Loop
Close #myFile
Здравствуйте, Подскажите, пож-та, почему не устанавливается записанный макрорекордером макрос на промежуток между датами? В данном случае 01.12.2022-03.12.2022.
Здравствуйте. Подскажите, пож-та, как форме UserForm1(верхнему левому углу) при появлении на экране передать положение координат курсора мышки? Т.е. при показе формы, UserForm1.Show на кнопку или сочетанием клавиш или еще как-либо, она должна появляться в месте где находится курсор мыши?
Здравствуйте. Подскажите, пож-та, возможно ли по предоставленной ссылке открыть файл Excel находящийся в SharePoint в классическом приложении Excel (из состава MO 365) установленном на ПК? После программного открытия планируется редактирование макросом или считывание данных средствами VBA. Ссылка корпоративная. Открытие происходит с введением логина и пароля (они имеются). Знаю, что требуется пример, но к сожалению, в данном случае в целях безопасности, не могу предоставить ссылку на файл, т.к. доступ по паролю и место хранение корпоративное. Ответ скорее всего получу соответствующий, но может кто-то всё-таки подскажет код открытия таких файлов, если можно с прописанными логином и паролем в коде, чтобы в окне руками не вводить?
Здравствуйте. Подскажите, пож-та, как изменить цвет TextBox на желтый при активации кликом мышкой (после клика текстовое поле становится активным для редактирования и в нем мигает курсор)? При выборе следующего TextBox, предыдущий должен стать обратно белым.
Здравствуйте. Подскажите, пож-та, как с помощью одной кнопки добавить а ячейку "А1" текст из активного TextBox на форме. Активный, имеется ввиду тот, который выбран для редактирования, в котором мигает курсор. Текстовых полей может быть много. Не хотелось бы возле каждого добавлять кнопку.
Здравствуйте. Подскажите, пож-та, можно ли цикл For Each в диапазоне запустить в обратном порядке, т.е. при 1-м проходе rng.Value=Range("A10"), при 2-м rng.Value=Range("A9"), при 3-м rng.Value=Range("A8") и т.д.?
Код
Dim rng As Range
For Each rng In Range("A1:A10")
msgbox rng.Value
Next
Здравствуйте. В книге несколько листов. На "Лист1" имеется кнопка "CommandButton1" (ActiveX). Подскажите, пож-та, макрос VBA с помощью которого можно получить в сообщении Msgbox цвет данной кнопки при открытии и закрытии книги. Пример во вложении.
Здравствуйте. Подскажите, пож-та, как при помощи макроса VBA в переменные получить координат формы UserForm (верхний левый угол) и затем, используя данные координаты произвести действие - клик левой кнопкой мышки по полоске с заголовком данной формы (только не на кнопку закрыть). Если имеет значение, то видимость книги Application.Visible может быть true или false. На ПК может быть как один так и два монитора.
Здравствуйте. Подскажите, пожалуйста, VBA макрос для формирования 2D кодов в ячейках Excel по содержимому соседней (заданной) ячейки. Нужна разновидность Data Matrix.