2010-07-14 5 views
0

Win-XP/Excel 2003/VBA ....Excel CommandBars/Органы управления на местных языках

У меня есть следующий фрагмент кода, чтобы перехватывать все действия пасты, инициированных пользователем (главное меню, контекстное меню и управление Ключ -V) и отправить его в Sub TrappedPaste()

.... 
Application.CommandBars("Edit").Controls("Paste").OnAction = "TrappedPaste" 
Application.CommandBars("Edit").Controls("Paste Special...").OnAction = "TrappedPaste" 
Application.CommandBars("Cell").Controls("Paste").OnAction = "TrappedPaste" 
Application.CommandBars("Cell").Controls("Paste Special...").OnAction = "TrappedPaste" 
Application.OnKey "^v", "TrappedPaste" 
.... 

Этот код работает нормально. Чудо произошло во время всемирного развертывания листа, потому что «Редактировать» - это не «Редактировать», а «Вставить» - это не «Вставить» на немецком, французском и других языках между (A) leut и (Z) apotec: - O

Q:

  1. есть ли способ достижения независимости от языка первенствовать пользовательский интерфейс, т.е. есть числовое aequivalent к «Вставить» аргумент который является тем же на всех национальных языках?
  2. как я могу найти этот номер?
  3. ctrl-V всегда ctrl-v на всех локальных языках Windows?

Заранее спасибо за любую помощь

сердечным приветом MikeD

+1

Вы забыли «Shift + Ins» и щелкните правой кнопкой мыши. – GSerg

+0

@GSerg: спасибо за подсказку на Shift-Ins .... щелчок правой кнопкой мыши открывает контекстное меню, которое адресуется ... CommandBars («Cell») .... – MikeD

ответ

2

Каждый элемент управления на панели инструментов имеет ID, который может быть использован с FindControl функции:

? application.CommandBars("Edit").FindControl(msoControlButton, 22).Caption 

где 22 является идентификатор кнопки Paste. Насколько я мог проверить, это число одинаково на разных языках.
Итак, вы можете посмотреть их в английской версии и просто записать их жестко.

+0

OK Я попробую это; и как насчет имен команд, у них есть аналогичные идентификаторы, потому что EDIT не является EDIT на других языках, а также – MikeD

+0

ahhhh Я вижу, у них тоже есть ID. hack-hack – MikeD

+1

Нет, отредактируйте IS edit на других языках. Потому что, в отличие от элементов управления, в командных барах есть '.Name' и' .NameLocal'. – GSerg

Смежные вопросы