PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : پرسش: ماژولی برای صفجه کلید فارسی



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

iranweld
2015/10/14, 08:27
با سلام

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

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


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next

If Not Application.Intersect(Target, Range("b2")) Is Nothing Or _
Not Application.Intersect(Target, Range("g2")) Is Nothing Then

changelanguage

Else

changelanguage2

End If


On Error GoTo 0

End Sub


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 String, ByVal 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.LanguagePreferredForE diting(msoLanguageIDEnglishUS) Then

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(9, 0)
GetKeyboardLayoutName strRet
If strRet = (strLangID & Chr(0)) Then

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

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

If Application.LanguageSettings.LanguagePreferredForE diting(msoLanguageIDEnglishUS) Then

SwitchKeyboardLang (LANG_ENGLISH)
End If

End Sub

khorasan66
2015/10/17, 12:11
با سلام
من دستورات شما را درون فایل قراردادم با خطا مواجه شد لطفاً یک بررسی نمائید

iranweld
2015/10/17, 12:20
با سلام
آیا فایلی رو که در سایت قرار دارد را دانلود و تست فرمودید؟
بر روی ویندوز 7 جواب میده ولی روی ویندوز 8 جواب نمیده

khorasan66
2015/10/19, 12:36
با تشکر متاسفانه من از win8.1 می کنم