ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 怎么实现输入不同的语言默认字体不一样

怎么实现输入不同的语言默认字体不一样

作者:绿色风 分类: 时间:2022-08-17 浏览:125
楼主
い卋玑┾宝珼
Q:怎么实现输入不同的语言默认字体不一样,比如说我输入日语的时候,字体要用MS Gothic,而输入中文的时候,要用宋体?

A:可以通过获取当前输入法语言,然后在change事件里,根据获取的不同语言,进行对应的设置。

首先是获取当前输入法的语言的处理
其实用法还是比较容易看懂的,其实就是用API,获取系统当前的输入法状态。
获取当前输入语言的代码如下:
  1. Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long

  2. Public Function GetKbLayout() As String
  3.   On Error Resume Next
  4.   Dim strLocId As String
  5.   strLocId = String(9, 0)
  6.   GetKeyboardLayoutName strLocId
  7.   GetKbLayout = strLocId
  8. End Function
测试当前输入法的ID值
  1. Sub test()
  2. Debug.Print ASC(GetKbLayout)
  3. End Sub
以下是切换单元格时,根据取出来的输入法,设置当前的字体
因为需求是只设日语输入法和中文输入法时的字体,所以根据需求写了以下示例代码。

大家如果有其它需求,可以进行少量修正,如添加分支,改变更改字体的时机等
  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  2.     If Asc(GetKbLayout) = 48 Then '日语输入法
  3.         Target.Font.Name = "MS Gothic"
  4.     ElseIf Asc(GetKbLayout) = 69 Then '中文输入法
  5.         Target.Font.Name = "宋体"
  6.     End If
  7. End Sub
附件是示例文档,供参考


根据当前输入法,设置字体.zip
2楼
xmyjk
学习了,谢谢西西。
3楼
千年一梦遥
跟西西学习
4楼
A______________
我被忽悠了 下载了 都是个空的。
5楼
い卋玑┾宝珼
里面有代码
6楼
老糊涂
学习了,谢谢

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap