4

In MS Excel, is it possible to set the content language of cells e.g. per column? The purpose would be, among other things, to make proper spelling checks when the content is multilingual (e.g., a dictionary), like we can do in MS Word.

2 Answers2

3

Here's a quick-and-dirty macro that you can hopefully adapt to your needs. As it is now, it will run a spell check in American English on Column A, and then run a spell check in Mexican Spanish in Column B. You can find the codes for supported languages here.

Sub multilanguageSC()
Dim rngEng As Range, rngSpa As Range

'Set ranges to check for each language.
Set rngEng = ActiveSheet.Range("A:A")
Set rngSpa = ActiveSheet.Range("B:B")

'Set spelling dictionary language to English (US).
Application.SpellingOptions.DictLang = 1033
'Check spelling for designated English range.
rngEng.CheckSpelling

'Set spelling dictionary language to Spanish(Mexico).
Application.SpellingOptions.DictLang = 2058
'Check spelling for designated Spanish range.
rngSpa.CheckSpelling

'Set spelling dictionary back to default setting.
Application.SpellingOptions.DictLang = Application.LanguageSettings.LanguageID(msoLanguageIDUI)

End Sub
Excellll
  • 12,847
0

Yes, it can be done. Here is an example for Japanese and English input. (You can make different settings for the type of Japanese input you want to allow.)

I use the Input Rules on the Data tab. (I have to set the "Options", "Language", "Editing Language" to "Japanese")

Just go to the "Data" tab and then select "Conditional Rules" from the "Data Tools" group. There will now be a new tab on the right called "Japanese Input". Set one column to "On", the other to "Off", and you're ready to go.

Looks like they can be done with VB too. Not sure about the cell ranges though.

Sub Cond()
'
' Cond Macro
'

'
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
        :=xlBetween
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .IMEMode = xlIMEModeOn
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Darius
  • 2,246
Wasabi
  • 301