#excel #vba
#excel #vba
Вопрос:
Мне нужно получить номер строки курсора в окне ActiveCodeWindow VBE. Это можно сделать?
Когда я нахожусь в VBE, есть виджет редактирования / текста (на стандартной панели инструментов), который показывает номер строки и столбец положения курсора, поэтому я знаю, что VBA отслеживает это. Итак, как мне предоставить эту функциональность?
Ответ №1:
Доступ к VBE можно получить с помощью модели расширения Microsoft Visual Basic для приложений. По умолчанию это запрещено, поскольку это распространенный вектор вредоносной документации Office.
Если вы включите эту функцию, вы позволяете создавать вредоносный код VBA «на лету» таким образом, чтобы антивирусные сканеры не могли его обнаружить. По этой причине рекомендуется никогда не использовать эти функции. На любом компьютере, на котором выполняется ваш код, эта функция безопасности должна быть отключена.
Источник: программный доступ к проекту Office VBA запрещен
В документации MSDN говорится, что это возможно с помощью метода, называемого: GetSelection
Вы должны запустить это на ActiveCodePane
, передавая переменные, которые будут заполнены возвращаемыми значениями.
Пример
Dim startline As Long
Dim startcol As Long
Dim endline As Long
Dim endcol As Long
Application.VBE.ActiveCodePane.GetSelection startline, startcol, endline, endcol
Debug.Print "Line: " amp; startline
Debug.Print "Column: " amp; startcol
Дополнительное чтение
Комментарии:
1. Спасибо за пример косой черты, это и setSelection помогут мне добраться туда, куда я хочу. Что касается запуска кода как есть, это только для меня на работе и дома. Никогда не выходя в дикую природу, и я держу свой компьютер заблокированным.
2. @DanM, более конкретно, способ устранения этой угрозы заключается в следующем: никогда не открывайте документ с поддержкой макросов, который вы получаете из внешнего источника. Не имеет значения, кто отправил его вам или где вы его скачали.