首页 > 解决方案 > 即使 Excel 语言设置为阿拉伯语,VBA 也无法设置 RightToLeft

问题描述

我的 Excel(Office 365、Windows 10)VBA 项目有问题。我正在尝试创建一个等效的GETTEXT,允许作者国际化,从而为他们自己的项目提供本地化。我试图复制使用 Excel 的人在使用 RTL 语言(如阿拉伯语)时会看到的观点。

我已经下载并安装了阿拉伯语语言包。我已将其设为我的首选语言,并且它会在我的 Office 应用程序中默认打开(顺便说一句 - 我不懂阿拉伯语,我可以轻松下载任何其他 RTL 语言)。

我从Tools > Options > Editor Format > Font: Normal Text = "Dubai Medium (Arabic)"

不幸的是,我不能直接在控件属性窗口中显示阿拉伯文本,例如表单标题或文本框文本;我也无法在编辑器窗口中键入或粘贴阿拉伯文本。我得到了可怕的????

内置 Excel 消息框和命令以阿拉伯语和 RTL 显示,但我的消息框和表单无法设置。到目前为止,我发现的唯一解决方法是将阿拉伯语文本放在工作表单元格中并从那里调用它,或者将文本直接粘贴到表单控件中。还MsgBox允许 RTL 和右对齐文本常量,这很好,但这让我的表单一团糟,即使我以编程方式更改控件的.Left.TextAlign值,我仍然有左对齐表单标题的问题,右对齐关闭按钮,以及 MultiPage 和 TabStrip 对齐的各种问题。

我不敢相信微软会如此尴尬,所以我一定错过了一些东西。我讨厌安装阿拉伯语作为我的 Windows 语言只是为了测试,因为那真的会搞砸我的一天 - 我会完全迷失 - 对阿拉伯语用户没有任何冒犯!

任何帮助将非常感激。

标签: excelvbalocalizationarabicright-to-left

解决方案


好的,我终于让它工作了(有点)。我必须将系统语言环境设置为阿拉伯语。这可以通过以下方式完成:

Settings > Time and Language > Language > Administrative Language Settings (link)

然后在随后的对话框中......

在 下Language for non-Unicode programs,按下Change System Locale按钮并选择阿拉伯语选项之一。

唯一的问题是表单标题未右对齐,并且控制框(关闭)仍在右侧。但我猜那是小土豆。所有带有滚动条/按钮的控件(RefEdit、ListBox、ComboBox 等)现在都具有正确的 RTL 位置。Tabstrips、Frames 和 MultiPages 也是正确的 RTL'd。我希望这可以帮助其他任何对此问题感到困惑的人。

RTL 表格的屏幕截图


推荐阅读