Vba excel изменить курсор

Обновлено: 07.07.2024

У вас большой монитор, но таблицы, с которыми вы работаете - еще больше. И, пробегая взглядом по экрану в поисках нужной информации, всегда есть шанс "соскользнуть" взглядом на соседнюю строчку и посмотреть не туда. Я даже знаю людей, который для таких случаев постоянно держат недалеко от себя деревянную линейку, чтобы приложить ее к строке на мониторе. Технологии будущего!

А если при движении активной ячейки по листу будет подсвечиваться текущая строка и столбец? Своего рода координатное выделение примерно такого вида:

Поудобнее, чем линейка, правда?

Есть несколько способов разной сложности, чтобы реализовать такое. Каждый способ - со своими плюсами и минусами. Давайте разберем их детально.

Способ 1. Очевидный. Макрос, выделяющий текущую строку и столбец

Самый очевидный путь для решения нашей проблемы "в лоб" - нам нужен макрос, который будет отслеживать изменение выделения на листе и выделять целую строку и столбец для текущей ячейки. Также желательно иметь возможность при необходимости включать и отключать эту функцию, чтобы такое крестообразное выделение не мешало нам вводить, например, формулы, а работало только тогда, когда мы просматриваем список в поисках нужной информации. Это приводит нас к трем макросам (выделения, включения и выключения), которые нужно будет добавить в модуль листа.

Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:

Измените адрес рабочего диапазона на свой - именно в пределах этого диапазона и будет работать наше выделение. Затем закройте редактор Visual Basic и вернитесь в Excel.

Нажмите сочетание клавиш ALT+F8, чтобы открыть окно со списком доступных макросов. Макрос Selection_On, как нетрудно догадаться, включает координатное выделение на текущем листе, а макрос Selection_Off - выключает его. В этом же окне, нажав кнопку Параметры (Options) можно назначить этим макросам сочетания клавиш для удобного запуска.

Плюсы этого способа:

  • относительная простота реализации
  • выделение - операция безобидная и никак не изменяет содержимое или форматирование ячеек листа, все остается как есть

Минусы этого способа:

  • такое выделение некорректно работает в том случае, если на листе есть объединенные ячейки - выделяются сразу все строки и столбцы, входящие в объединение
  • если случайно нажать клавишу Delete, то очистится не только активная ячейка, а вся выделенная область, т.е. удалятся данные из всей строки и столбца

Способ 2. Оригинальный. Функция ЯЧЕЙКА + Условное форматирование

Этот способ хотя и имеет пару недостатков, мне представляется весьма изящным. Реализовать что-либо, используя только встроенные средства Excel, минимально влезая в программирование на VBA - высший пилотаж ;)

Способ основан на использовании функции ЯЧЕЙКА (CELL), которая может выдавать массу различной информации по заданной ячейке - высоту, ширину, номер строки-столбца, числовой формат и т.д.. Эта функция имеет два аргумента:

  • кодовое слово для параметра, например "столбец" или "строка"
  • адрес ячейки, для которой мы хотим определить значение этого параметра

Хитрость в том, что второй аргумент не является обязательным. Если он не указан, то берется текущая активная ячейка.

Вторая составляющая этого способа - условное форматирование. Эта крайне полезная функция Excel позволяет автоматически форматировать ячейки, если они удовлетворяют заданным условиям. Если соединить эти две идеи в одно целое, то получим следующий алгоритм реализации нашего координатного выделения через условное форматирование:

  1. Выделяем нашу таблицу, т.е. те ячейки, в которых в будущем должно отображаться координатное выделение.
  2. В Excel 2003 и более старших версиях открываем меню Формат - Условное форматирование - Формула (Format - Conditional Formatting - Formula) . В Excel 2007 и новее - жмем на вкладке Главная (Home) кнопку Условное форматирование - Создать правило (Conditional Formatting - Create Rule) и выбираем тип правила Использовать формулу для определения форматируемых ячеек (Use formula)
  3. Вводим формулу для нашего координатного выделения:

Все почти готово, но остался один нюанс. Дело в том, что Excel не считает изменение выделения изменением данных на листе. И, как следствие, не запускает пересчет формул и перекраску условного форматирования только при изменении положения активной ячейки. Поэтому добавим в модуль листа простой макрос, который будет это делать. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этого простого макроса:

Теперь при изменении выделения будет запускаться процесс пересчета формулы с функцией ЯЧЕЙКА в условном форматировании и заливаться текущая строка и столбец.

Плюсы этого способа:

  • Условное форматирование не нарушает пользовательское форматирование таблицы
  • Этот вариант выделения корректно работает с объединенными ячейками.
  • Нет риска удалить целую строку и столбец с данными при случайном нажатии Delete.
  • Макросы используются минимально

Минусы этого способа:

  • Формулу для условного форматирования надо вводить вручную.
  • Нет быстрого способа включить-выключить такое форматирование - оно включено всегда, пока не будет удалено правило.

Способ 3. Оптимальный. Условное форматирование + макросы

Золотая середина. Используем механизм отслеживания выделения на листе при помощи макросов из способа-1 и добавим к нему безопасное выделение цветом с помощью условного форматирования из способа-2.

Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:

Не забудьте изменить адрес рабочего диапазона на адрес своей таблицы. Закройте редактор Visual Basic и вернитесь в Excel. Чтобы использовать добавленные макросы, нажмите сочетание клавиш ALT+F8 и действуйте аналогично способу 1.

Способ 4. Красивый. Надстройка FollowCellPointer

Excel MVP Jan Karel Pieterse родом из Нидерландов раздает у себя на сайте бесплатную надстройку FollowCellPointer(36Кб), которая решает ту же задачу, отрисовывая с помощью макросов графические линии-стрелки для подсветки текущей строки и столбца:

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

Microsoft Excel - это универсальная программа для работы с электронными таблицами, которая позволяет пользователям быстро и легко вводить данные любого рода. Его макет представляет собой сетку, в которой данные организованы по строкам и столбцам. После ввода в программу Excel предлагает надежный набор инструментов для навигации по данным, управления содержимым и выполнения анализа. Курсор мыши Windows используется для различения различных действий, которые пользователь может выполнить, используя только мышь. Эти функции позволяют быстро выполнять множество функций с данными. В Excel легко изменить курсор, чтобы вы могли получить доступ к этим инструментам.


кредит: BananaStock / BananaStock / Getty Images

Шаг 1

Шаг 2

Навигация по электронной таблице. Курсор мыши остается белым знаком плюс всякий раз, когда курсор находится над ячейкой в ​​любой из строк или столбцов программы.

Шаг 3

Наведите указатель мыши на ячейку, которая в данный момент выбрана, чтобы изменить курсор на другие рисунки, отражающие определенные действия. Выбранные ячейки имеют темную черную рамку вокруг них, и их содержимое также отображается на панели формул программы над сеткой электронных таблиц. Когда мышь располагается вдоль любой из границ ячейки, она превращается в четырехугольную стрелку. При отображении этот курсор можно щелкнуть и перетащить, чтобы переместить содержимое ячейки в другую ячейку.

Шаг 4

Шаг 5

Шаг 6

Наведите курсор на любую кнопку панели инструментов или меню в верхней части программы, и курсор мыши изменится на стандартный указатель Windows, чтобы вы могли щелкнуть и получить доступ к этим инструментам.

Могу ли я изменить курсор мыши на Mac?

Могу ли я изменить курсор мыши на Mac?

OS X Mavericks не предоставляет много опций для изменения курсора мыши. Измените размер курсора, используя параметры доступности. Если вы хотите чего-то большего, вы будете .

Неправильный курсор обычно вызывается проблемой с вашей мышью, а не с программным обеспечением или операционной системой. Симптомы обычно включают в себя перемещение курсора, когда вы .

A blog focused primarily on Microsoft Excel, PowerPoint, & Word with articles aimed to take your data analysis skills to the next level. Learn anything from creating dashboards to automating tasks with VBA code!

TheSpreadsheetGuru

There may be certain instances where it makes sense to change the look of the mouse cursor to notify your users of a particular action. A classic case for this is when you hover over a button. Typically, your mouse cursor will change from the pointer arrow to a pointer hand.

By default, Microsoft has picked a cursor type for each control available to add in a VBA userform. However, there are steps you can take to change the cursor image that appears while interacting with these controls. Here are a list of all the available Mouse Pointers you can use within your userforms

Most of these should be self explanatory but if you are unsure you can always test them out to see how they appear.

You'll notice that one very important cursor image does not appear on this list and it is the Pointed Finger (aka Hand) icon shown in the image above with the green Accept buttons. I will discuss later on in this article how you can use the fmMousePointerCustom option to load a custom cursor icon. This will allow you to use any cursor icon you want.

How To Change the Mouse Pointer

Here are the basic steps to change which mouse pointer image displays while using a specific control in your VBA userforms.

  1. Ensure your userform is showing in the Visual Basic Editor (keyboard shortcut Alt + F11)
  2. Ensure the Properties Pane is visible (keyboard shortcut F4)
  3. Select the userform you wish to modify
  4. Within the Properties Pane, find the Property called MousePointer
  5. Select the mouse pointer image you would like shown when you hover over the control with your cursor (fmMousePointerDefault is the default option)

Using A Custom Mouse Pointer

I you do not find any of the built-in mouse pointers suitable for your userform you also have the option to upload your own cursor icon. The steps to do this are as follows:

  1. Ensure your userform is showing in the Visual Basic Editor (keyboard shortcut Alt + F11)
  2. Ensure the Properties Pane is visible (keyboard shortcut F4)
  3. Select the userform you wish to modify
  4. Within the Properties Pane, find the Property called MousePointer and change it to the fmMousePointerCustom option
  5. Also within the Properties Pane, find the Property called MouseIcon and click the little gray box with three black dots that appears on the far right of the property
  6. Find the icon image you would like to appear (file type must be .ico or .cur)

Where Do You Find The Hand Icon on The Web?

I had spent years trying to find a quality hand icon that would be compatible with Microsoft's userforms. I dug through forums, articles, and everything in between but could only find pixelated hand icons that did not look like the current native hand cursor the Windows OS typcially uses.

About a year ago I finally found a file download that matched the quality I was looking for. I don't have the slightest clue where I found it but I made sure to save several copies so I would never have to find it again. With this article I also want to save you the pain of having to search for this gem.

Here is a direct link to download this cursor icon: Hand Cursor.ico

How Do I Modify This To Fit My Specific Needs?

Chances are this post did not give you the exact answer you were looking for. We all have different situations and it's impossible to account for every particular need one might have. That's why I want to share with you: My Guide to Getting the Solution to your Problems FAST! In this article, I explain the best strategies I have come up with over the years to getting quick answers to complex problems in Excel, PowerPoint, VBA, you name it!

I highly recommend that you check this guide out before asking me or anyone else in the comments section to solve your specific problem. I can guarantee 9 times out of 10, one of my strategies will get you the answer(s) you are needing faster than it will take me to get back to you with a possible solution. I try my best to help everyone out, but sometimes I don't have time to fit everyone's questions in (there never seem to be quite enough hours in the day!).

I wish you the best of luck and I hope this tutorial gets you heading in the right direction!

Читайте также: