Excel本地语言的CommandBars / Controls

时间:2010-07-14 08:14:55

标签: excel-vba excel-2003 vba excel

Win-XP / Excel 2003 / VBA ....

我有以下代码拦截用户发起的所有粘贴活动(主菜单,上下文菜单和控制-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: - 0

问:

  1. 有没有办法实现 独立于语言 Excel用户界面,即 有一个数字等效的 “粘贴”参数是一样的 所有国家的语言?
  2. 我该如何找到这个号码?
  3. 在所有本地Windows语言中是ctrl-V总是ctrl-v吗?
  4. 提前感谢您提供任何帮助

    亲切的问候MikeD

1 个答案:

答案 0 :(得分:2)

工具栏上的每个控件都有一个ID,可以与FindControl函数一起使用:

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

其中22Paste按钮的ID。据我所知,这个数字在不同的语言中是相同的 所以你可以在英文版中查找它们并对它们进行硬编码。