Строка состояния VBA

Я работаю над макросом Word VBA для 80 или около того пользователей. В офисе высокая текучесть кадров, поэтому страдает обучение, поэтому одно из требований, предъявляемых к этому проекту, - полная и понятная документация. Однако, чтобы дополнить это и избавить новичков от необходимости открывать 100-страничный документ, когда они хотят попробовать что-то новое, мне нужна строка состояния в каждой пользовательской форме (их пять), которая предоставляет контекстную помощь. Всплывающие подсказки меня раздражают.

У меня не так много опыта, поэтому я хотел

По сути, у меня есть файл, содержащий каждую строку статуса. (В настоящее время это текстовый файл, но мне было интересно, следует ли мне использовать электронную таблицу или CSV для упрощения редактирования другими сотрудниками в будущем.) Каждый элемент управления имеет событие MouseMove, которое относится к функции: getStatus (cID), которая открывает файл, захватывает строку и отображает ее в метке состояния. Он также извлекает несколько параметров из той же строки файла, например, является ли метка интерактивной (для ссылки на страницу в файле справки) и какого цвета должна быть метка.

Итак, на самом деле несколько вопросов:

Будет ли приложение работать медленно, если пользовательская форма постоянно обращается к файлу? Мне это нравится, но я был в нем слишком долго, и я единственный пользователь, имеющий доступ к этому файлу. К нему будут постоянно обращаться 80 человек.

MouseMove над элементом управления - лучший способ? Должен ли я вместо этого использовать координаты?

Самое главное (с точки зрения того, что мне нужно делать как можно меньше работы) есть ли способ сделать это, чтобы мне не нужно было иметь событие MouseMove для каждого элемента управления? У меня есть несколько сотен или около того элементов управления, каждый со своим идентификатором (ну, пока нет, но они будут, если это единственный способ сделать это). Может быть, когда форма загрузится, я смогу загрузить ВСЕ возможные строки состояния, чтобы они были готовы к любому наведению мыши на элемент управления. Но тогда, может быть, время загрузки ничтожно мало?

Цените любые идеи или мысли - особенно если у VBA уже есть целый ряд функций для этого, и я просто пытаюсь изобрести колесо. Строкой состояния приложения пользоваться не могу, так как само приложение пользователь видит редко.

Спасибо!

Обновлено:

Он предназначен как для ввода данных, так и для создания небольшого документа.

Это контролируемая среда, поэтому вопросы безопасности макросов меня не беспокоят - а если что-то пойдет не так, это чужая ошибка или проблема :)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
1 862
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Постоянное чтение из файла - огромная трата времени и ресурсов - гораздо лучше загружать их только один раз в массив или коллекцию при загрузке формы.

Событие MouseMouse лучше, чем координаты, потому что вы можете перемещать вещи, не беспокоясь. Это много кода, но вы сможете сгенерировать большую его часть, если у вас есть список имен элементов управления, потому что код должен быть идентичным.

т.е.

Sub Control_MouseMove()
  DisplayStatus(Control)
End sub

Да, я вроде как решил, что нажатие клавиши в поле изменит статус, чтобы отразить текст справки для этого поля. Таким образом, мышление все равно изменило бы статус. Я надеюсь, что большинство людей не набирают и не наводят курсор мыши одновременно! :)

user51498 07.01.2009 01:50

Я бы рассмотрел свойства StatusText и ControlTipText элементов управления для такого рода помощи.

StatusText В этом примере задается текст справки строки состояния для поля формы с именем «Возраст».

With ActiveDocument.FormFields("Age")
    .OwnStatus = True
    .StatusText = "Type your current age."
End With

ControlTipText Его можно назначить на странице свойств для элемента управления.

Private Sub UserForm_Initialize()
    MultiPage1.Page1.ControlTipText = "Here in page 1"
    MultiPage1.Page2.ControlTipText = "Now in page 2"

    CommandButton1.ControlTipText = "And now here's"
    CommandButton2.ControlTipText = "a tip from"
    CommandButton3.ControlTipText = "your controls!"
End Sub

Другие вопросы по теме