Excel VBA 复选框英语与法语

Posted

技术标签:

【中文标题】Excel VBA 复选框英语与法语【英文标题】:Excel VBA Checkboxes English vs French 【发布时间】:2017-11-04 00:44:27 【问题描述】:

我有一个需要处理复选框的 Excel 文件。复选框的名称是用法语自动定义的(由于我的安装是法语)。例如“Case à cocher 100”而不是“Checkbox 100”。

但是,当我们的兄弟公司使用这个 Excel 文件时,由于它们的安装是英文的,它会崩溃。

有没有办法让下面的英语和法语工作?

ActiveSheet.CheckBoxes("Case à cocher 488").Interior.Color = RGB(255, 255, 255)
ActiveSheet.CheckBoxes("Case à cocher 383").Interior.Color = RGB(255, 255, 255)
ActiveSheet.CheckBoxes("Case à cocher 467").Interior.Color = RGB(255, 255, 255)
ActiveSheet.CheckBoxes("Case à cocher 461").Interior.Color = RGB(255, 255, 255)
ActiveSheet.CheckBoxes("Case à cocher 460").Interior.Color = RGB(255, 255, 255)
ActiveSheet.CheckBoxes("Case à cocher 459").Interior.Color = RGB(255, 255, 255)
ActiveSheet.CheckBoxes("Case à cocher 458").Interior.Color = RGB(255, 255, 255)
ActiveSheet.CheckBoxes("Case à cocher 8").Interior.Color = RGB(255, 255, 255)

我似乎找不到重命名复选框名称的方法。

【问题讨论】:

这是一个很常见的问题。通常,您不应使用英语以外的任何语言特定代码,以确保您的代码将以其他语言运行。我怀疑在您的情况下,它可能是代码中的 à。为避免这种情况,请使用工作表来命名这些框。使用对那些包含名称的单元格的引用。根据语言设置,您使用另一列。 这看起来像很多重复的代码。如果可以,您应该考虑实现一个循环并对活动工作表中的每个复选框执行相同的操作,使用类似于what can be found here 的方式。这样做的好处是您甚至不需要知道各个复选框的名称。但我不知道你是否只需要处理特定的问题......即使那样,我也会考虑定义一个子程序来处理这个问题。 @ChristopherKyleHorton 是的,我知道循环。这是由对循环一无所知的工程师构建的代码。他们意识到它有问题,所以我负责修复它。 【参考方案1】:

检查区域设置,然后决定使用哪一个。

试试这个

Sub Sample()
    Dim CBNAME As String

    Select Case Application.International(XlApplicationInternational.xlCountryCode)
        Case 1 '<~~ English
            CBNAME = "CheckBox"
        Case 33 '<~~ French
            CBNAME = "Case à cocher"
    End Select

    ActiveSheet.CheckBoxes(CBNAME & " 488").Interior.Color = RGB(255, 255, 255)
End Sub

【讨论】:

效果很好!!

以上是关于Excel VBA 复选框英语与法语的主要内容,如果未能解决你的问题,请参考以下文章

使用VBA获取Excel中所有复选框的值

在Excel中使用VBA循环复选框非常慢

如何从 VBA Access 中勾选 Excel 复选框

使用 VBA 宏从 Excel 工作簿中取消选择所有复选框

如何使用 VBA 从 Excel 用户窗体中读取复选框的值

使用复选框调用子程序excel vba