ماژولی برای صفجه کلید فارسی

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • khorasan66

    • 2012/06/12
    • 111

    پرسش ماژولی برای صفجه کلید فارسی

    با سلام
    آیا دستوری هست که :
    1- ) : وقتی excel باز میشود زبان نوشتاری را روی فارسی و یا انگلیسی تنظیم نماید ؟ (( به تنظیم زبان پیش فرض ویرایش ویندوز کاری ندارم )
    2- ) : سلول های مشخصی مثلا B2 , G2 وقتی انتخاب شوند به صورت خودکار فقط انگلیسی و یا فقط فارسی در آن قابلیت تایپ داشته باشد و بقیه سلول ها با همان زبان پیش فرض تایپ شوند ؟
    لطفا راهنمایی فرمائید . با تشکر
  • iranweld

    • 2015/03/29
    • 3341

    #2
    با سلام

    این نمونه فایلی است که قبلا سرکار خانم خاکزاد زحمت تهیه آنرا تقبل کرده اند.

    حال با یک تغییر کوچک به خواسته شما تغییر یافت

    کد PHP:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    On Error Resume Next

     
    If Not Application.Intersect(TargetRange("b2")) Is Nothing Or _
     Not Application
    .Intersect(TargetRange("g2")) Is Nothing Then
      
     changelanguage
     
     
    Else
     
     
    changelanguage2
     
     End 
    If
     

    On Error GoTo 0

    End Sub 
    کد PHP:
    Private Declare Function GetKeyboardLayoutName Lib "user32" _
    Alias 
    "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
    Private Declare Function LoadKeyboardLayout Lib "user32" _
    Alias 
    "LoadKeyboardLayoutA" _
    (ByVal pwszKLID As StringByVal flags As Long) As Long

    Const KLF_ACTIVATE = &H1


    Global Const LANG_ENGLISH As String "00000409"
    Global Const LANG_persian As String "00000429"


    Sub changelanguage()

    If 
    Application.LanguageSettings.LanguagePreferredForEditing(msoLanguageIDEnglishUSThen

    SwitchKeyboardLang 
    (LANG_persian)
    End If

    End Sub


    'End Sub'
     
    Function SwitchKeyboardLang(ByVal strLangID As String) As Boolean

    Dim strRet 
    As String
    On Error Resume Next
    strRet 
    String(90)
    GetKeyboardLayoutName strRet
    If strRet = (strLangID Chr(0)) Then

    SwitchKeyboardLang 
    True
    Exit Function
    Else
    strRet String(90)
    strRet LoadKeyboardLayout((strLangID Chr(0)), KLF_ACTIVATE)
    End If

    GetKeyboardLayoutName strRet
    If strRet = (strLangIDThen
    SwitchKeyboardLang 
    True
    End 
    If
    End Function
    Sub changelanguage2()

    If 
    Application.LanguageSettings.LanguagePreferredForEditing(msoLanguageIDEnglishUSThen

    SwitchKeyboardLang 
    (LANG_ENGLISH)
    End If

    End Sub 
    فایل های پیوست شده
    Last edited by iranweld; 2015/10/14, 09:38.

    کامنت

    • khorasan66

      • 2012/06/12
      • 111

      #3
      با سلام
      من دستورات شما را درون فایل قراردادم با خطا مواجه شد لطفاً یک بررسی نمائید

      کامنت

      • iranweld

        • 2015/03/29
        • 3341

        #4
        با سلام
        آیا فایلی رو که در سایت قرار دارد را دانلود و تست فرمودید؟
        بر روی ویندوز 7 جواب میده ولی روی ویندوز 8 جواب نمیده

        کامنت

        • khorasan66

          • 2012/06/12
          • 111

          #5
          با تشکر متاسفانه من از win8.1 می کنم

          کامنت

          چند لحظه..