2017-06-02 103 views
4

我有一個需要處理複選框的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

回答

7

檢查區域設置,然後決定使用哪一個。

試試這個

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