Excel VBA复选框英文和法文

问题描述:

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

但是,当我们的兄弟公司使用这个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) 

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

+0

这是一个非常普遍的问题。通常,您不应该使用除英语之外的任何特定于语言的代码来确保您的代码将以其他语言运行。我怀疑你的情况可能是你的代码中的à。为避免这种情况,请使用工作表命名这些框。使用对包含名称的单元格的引用。根据语言设置,您使用另一列。 – ksauter

+0

这看起来像很多重复的代码。如果可以的话,你应该考虑实现一个循环,并对活动工作表中的每个复选框执行相同的操作,使用类似于[可在此处找到的内容](http://www.excel-easy.com/vba) /examples/loop-through-controls.html)。这带来的好处是你甚至不需要知道各个复选框的名字。但是我不知道你是否只需要解决特定的问题......即便如此,我还是会考虑定义一个子程序来处理这个问题。 –

+0

@ChristopherKyleHorton是的,我知道这个循环。这是由一位不了解循环的工程师编写的代码。他们意识到它有问题,所以我负责修复它。 – Alex

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

试试这个

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 
+0

作品真棒! – Alex