تغییر خودکار زبان کیبورد در اکسل

3,157
6 دیدگاه
تغییر خودکار زبان کیبورد در اکسل

در اغلب موارد داده هایی که در اکسل وارد می کنیم از هر دو نوع لاتین و فارسی است، فرض کنید قصد ورود داده به یک جدول در اکسل را دارید و ساختار جدول به گونه ای است که در برخی ستون ها باید مقادیر فارسی و در برخی دیگر مقادیر را به صورت انگلیسی وارد کنید. در این موارد باید در هر بار جابه جایی در ستون ها، زبان کیبورد را تغییر داد که ناخوشایند بوده و از سرعت کار نیز می کاهد. در این مطلب قصد داریم روشی را برای تغییر خودکار زبان کیبورد در اکسل ارایه دهیم. از این روش می توان در یوزرفرم ها نیز استفاده کرد.

تغییر خودکار زبان کیبورد در شیت ها

برنامه اکسل را اجرا کرده و با استفاده از کلیدهای Alt+F11 وارد محیط VBA شوید و از منوی Insert یک ماژول (Module) جدید ایجاد کرده و کدهای ذیل را در آن وارد کنید.

Sheet1.ir

'=========== Sheet1.ir ===================
Option Explicit
Declare PtrSafe Function GetKeyboardLayoutName Lib "user32" _
Alias "GetKeyboardLayoutNameA" (ByVal C_LangID As String) As Long
Declare PtrSafe Function LoadKeyboardLayout Lib "user32" _
Alias "LoadKeyboardLayoutA" _
(ByVal Set_LangID As String, ByVal flags As Long) As Long
Global Const En_Lang As String = "00000409"
Global Const Per_Lang As String = "00000429"

Function SwitchKeyboardLang(ByVal LangID As String) As Boolean
    Dim Ret As String
    On Error Resume Next
    Ret = String(9, 0)
    GetKeyboardLayoutName Ret
    If Ret = (LangID & Chr(0)) Then
        SwitchKeyboardLang = True
        Exit Function
    Else
        Ret = String(9, 0)
        Ret = LoadKeyboardLayout((LangID & Chr(0)), 1)
    End If
    '
    GetKeyboardLayoutName Ret
    If Ret = (LangID) Then
        SwitchKeyboardLang = True
    End If
End Function

Sheet1.ir

برای مثال قصد داریم که در ستون های 2 و 4 و 6 اکسل مقادیر فارسی و در دیگر ستون ها مقادیر انگلیسی وارد کنیم. برای تغییر خودکار زبان کیبورد روی نام شیت کلیک راست کرده و گزینه View Code را انتخاب کنید و کد های ذیل را در پنجره باز شده وارد نمایید:

Sheet1.ir

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '============= Sheet1.ir =================
    Dim Col As Integer
    Col = Target.Column
    If Col = 2 Or Col = 4 Or Col = 6 Then
        'زبان فارسي
        SwitchKeyboardLang (Per_Lang)
    Else
        'زبان انگليسي
        SwitchKeyboardLang (En_Lang)
    End If
End Sub

Sheet1.ir

به محیط اکسل باز گردید، خواهید دید با انتخاب هر یک از سلول های ستون های 2 و 4 و 6 زبان کیبورد به طور خودکار فارسی و با انتخاب دیگر سلول ها زبان کیبورد انگلیسی می شود.

تغییر خودکار زبان کیبورد در یوزرفرم ها

برای تغییر خودکار زبان کیبورد در یوزرفرم ها کافی است در رویداد Enter تکس باکس مورد نظر کد ذیل را وارد کنید:

‘زبان فارسی
SwitchKeyboardLang (Per_Lang)
‘زبان انگلیسی
SwitchKeyboardLang (En_Lang)

برای مثال برای تغییر زبان کیبورد به فارسی در زمان  فعال شدن تکس باکسی با نام txt_Name از کد ذیل استفاده می شود

Sheet1.ir

Private Sub txt_Name_Enter()

    SwitchKeyboardLang (Per_Lang)
    
End Sub

Sheet1.ir

دقت کنید که حتما فایل اکسل را به فرمت xlsm.* ذخیره کنید. فایل مثال مورد استفاده در این مطلب را از لینک ذیل می توانید دریافت نمایید.

تعداد دانلود : 479

مطالب مرتبط :

6 دیدگاه. پیغام بگذارید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

حداکثر حجم مجاز فایل : 5 مگابایت فرمت های مجاز : jpeg - jpg - png - pdf- xls - xlsx - xlsb - xlsm - txt - csv - zip - rar فایل ها را اینجا بکشید

keyboard_arrow_up