Создание плавающей кнопки макроса (Microsoft Excel)
Лии нужна плавающая кнопка с назначенным макросом. Таким образом, когда она перемещается влево, вправо, вверх или вниз, кнопка остается рядом с ячейкой, над которой она работает. Лия задается вопросом, есть ли способ добавить такую кнопку в Excel.
Это невозможно сделать без использования макроса для управления размещением кнопки. (Это не должно быть большой проблемой, поскольку вы уже используете хотя бы один макрос в книге — тот, который запускается плавающей кнопкой.)
Прежде чем вдаваться в подробности того, как это сделать, вам нужно подумать, действительно ли вы хотите использовать этот подход. Например, вы можете назначить свой макрос сочетанию клавиш или кнопке на панели быстрого доступа. Любой подход устранит необходимость постоянно перемещать плавающую кнопку.
Если вы определенно хотите пойти по пути кнопок, тогда создайте свою экранную кнопку и свяжите ее со своим макросом. Затем просто создайте обработчик событий, который перемещает кнопку каждый раз, когда вы меняете выбранную ячейку. Например, предположим, что имя вашей кнопки — «Кнопка 1». В этом случае вы можете использовать следующий макрос:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) With ActiveSheet.Shapes("Button 1") .Top = Target.Offset(1).Top .Left = Target.Offset(, 1).Left End With End Sub
Помните, что это обработчик событий, поэтому его нужно поместить в окно кода для рабочего листа, к которому он применяется. Это приводит к перемещению кнопки так, чтобы она всегда находилась в правом нижнем углу выбранной ячейки.
Также следует отметить, что есть два способа создать кнопку макроса — либо как элемент управления Active X, либо как устаревший, неактивный элемент управления X. Вышеупомянутый подход отлично работает, если вы используете устаревший тип кнопки. Однако, если вы используете элемент управления Active X, вам нужно немного изменить макрос:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) With ActiveSheet.OLEObjects("CommandButton1") .Top = Target.Offset(1).Top .Left = Target.Offset(, 1).Left End With End Sub
Обратите внимание, что единственное изменение касается упоминаемого объекта. При наличии соответствующего обработчика событий всякий раз, когда вы изменяете ячейку, выбранную на экране, кнопка перемещается так, чтобы находиться только в правом нижнем углу выбранной ячейки. Таким образом, это не настоящий «плавающий»
кнопка, которая все время находится в одном и том же месте. Это должно быть нормально в ситуации Лии, поскольку она хотела, чтобы кнопка находилась рядом с ячейкой, в которой она работает (выбранной ячейкой), а не с ячейкой, которую она просматривает (например, когда она прокручивает, используя полосы прокрутки).
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13544) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.