Üdvözletem mindenkinek a nyár közepén a tetőtéri szobából, ahol jelenleg még éppen elviselhető a klíma 🙂
Ez a bejegyzés kapcsolódik az előzőhöz:
(Függvények (képletek) fordítása magyarról angolra és fordítva):
Függvények (képletek) fordítása magyarról angolra és fordítva
Az Excel megjelenítési nyelvét fogjuk kideríteni makróval. Joggal kérdezhetitek: minek is? Hiszen nyitok egy üres Excel-t és rögtön meg tudom állapítani mondjuk a menüből, hogy milyen nyelvű. Azonban – jómagam is ebbe a csoportba tartozok – olykor váltogatni kell a nyelvezetet pl. oktatás vagy tesztelés miatt.
A megjelenítési nyelvet viszonylag egyszerű megváltoztatni (pl. Office 365-ben):
Fájl – Beállítások – Nyelv – A felhasználó felület nyelvének megadása szekcióban: a kívánt nyelvet kijelöljük, majd a fel-le nyilakkal az első pozícióba tesszük:
Az “OK” gomb megnyomása után kapunk egy üzenetet:
További megjelenítési és súgónyelveket a fenti kép alján lévő linkre történő kattintással lehet hozzáadni:
Kétféle VBA kódot ismertetek a megjelenítési nyelv kiderítésére:
1. kijelölünk két üres cellát. Az egyikbe a makró beír egy képletet – pl. AVERAGE – majd a másik cellába kiírja a szerkesztőlécben látott képletet a megfelelő nyelven, mégpedig a KÉPLETSZÖVEG (angolul FORMULATEXT) segítségével. A makró futtatásakor ez történik:
A két cella kijelölése után te valószínűleg csak az üzenetablakot fogod látni. A teljes makró:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
Sub ExcelNyelve() Dim Tart As Range, Cella As Range, Cella2 As Range, i As Long ', Elem As Range Dim RngA As Range, C As Range 'készítette: XLMotyo 'Excel nyelvének meghatározása (magyar vagy USA angol) On Error GoTo Vege Set Tart = Application.InputBox _ ("Válassz két egymás melletti üres cellát az Excel nyelvének meghatározásához (ne használd a CTRL billentyût)!" _ , , , , , , , 8) On Error GoTo 0 Application.ScreenUpdating = False If Tart.Count <> 2 Then 'nem két cella lett kijelölve MsgBox _ "Válassz KÉT egymás melletti üres cellát (ne használd a CTRL billentyût)!", _ vbExclamation, Tart.Count & " cella kiválasztva" Exit Sub End If If Tart.Areas.Count <> 1 Then 'nem egymás melletti cellák lettek kijelölve MsgBox "Válassz két EGYMÁS MELLETTI üres cellát (ne használd a CTRL billentyût)!", vbExclamation, "" Exit Sub End If Set Cella = Tart.Cells(1) Set Cella2 = Tart.Cells(2) If Cella <> "" Or Cella2 <> "" Then 'nem üres az egyik/mindkettõ cella MsgBox "Válassz két egymás melletti ÜRES cellát (ne használd a CTRL billentyût)!", vbExclamation, "" Exit Sub End If Cella = "=AVERAGE(20,40)" Cella2.Formula = "=FORMULATEXT(" & Cella.Address & ")" 'FORMULATEXT képlet: ez a szerkesztõlécben látott képletet _ adja vissza a megfelelõ nyelven 'Cella.Formula 'nem jó, mert angol nyelven írja ki a képletet, függetlenül az Excel megjelenítési nyelvétol. _ Cella2.Text a helyes. If Cella2.Text Like "*ÁTLAG*" Then MsgBox "Az Excel nyelve magyar" ElseIf Cella2.Text Like "*AVERAGE*" Then MsgBox "Az Excel nyelve angol" Else MsgBox "Az Excel nyelve ismeretlen" End If Tart.ClearContents Application.ScreenUpdating = True Vege: End Sub |
A fenti kód alapos hibakereséssel rendelkezik: nem engedi, hogy kettőnél több/kevesebb cellát jelöljünk ki vagy nem egymás mellettieket. Akkor is befejeződik a futtatás, ha nem üres az egyik/mindkét kijelölt cella. Eredmény:
2. Nyelvi azonosító (LanguageID) alapján. Ehhez az Application.LanguageSettings.LanguageID tulajdonságot használjuk fel. Ez a sor visszaad egy négyjegyű azonosítót, mely alapján megállapíthatjuk a nyelvet:
1 |
MsgBox Application.LanguageSettings.LanguageID(msoLanguageIDUI) |
A teljes lista a nyelvi azonosítókkal itt található:
https://docs.microsoft.com/en-us/office/vba/api/office.msolanguageid
Képernyőrészlet a linkről:
A VBA kód:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub ExcelNyelve_v02() Dim Nyelvi_ID As Long 'készítette: XLMotyo 'Excel nyelvének meghatározása (magyar vagy USA angol) 'teljes lista a nyelvi azonosítókkal: 'https://docs.microsoft.com/en-us/office/vba/api/office.msolanguageid Nyelvi_ID = Application.LanguageSettings.LanguageID(msoLanguageIDUI) Select Case Nyelvi_ID Case 1033 'angol MsgBox "Az Excel nyelve angol" Case 1038 'magyar MsgBox "Az Excel nyelve magyar" Case Else MsgBox "Az Excel nyelve ismeretlen" End Select End Sub |
A 1038-as azonosító tehát a magyar nyelvet jelenti. Persze a fenti kód Select Case ága bővíthető újabb nyelvekkel, pl. a 1031-gyel, ami a német. Az eredmény itt is az alábbi üzenet:
A fenti makrókat bemásolhatjuk az egyéni makró munkafüzetbe (Personal.xlsb-be), így bármikor lefuttathatjuk őket, ha az Excel nyitva van.
Most már tehát kétféle módszert is ismertek az Excel megjelenítési nyelvének azonosításához. Ez lehet az alapja többek között a többnyelvű riportoknak, munkalapon belüli fordításoknak.
Remélem hasznos volt a poszt.
Kérdésed, észrevételed van? Hívj vagy dobj egy emailt az xlmotyo@gmail.com-ra