Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3162|回复: 5

[VBA] 022-程序兼容中英文版本-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-2-8 13:44 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难22
如何让程序兼容英文和中文系统
假设只有英文和简体中文两种需求,如何实现VBA程序在英文系统中执行时显示英文,而在中文系统中执行则显示中文?
è解决方案
利用API函数判断当前计算机的语言系统,在需要显示文字时,根据实际语言调用不同的语句。与疑难21中兼容Excel多版本时采用相同思路。
í操作方法
步骤1
编写一个判断操作系统语言的自定义函数,其值为布尔值,代码如下:

  1. Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
  2. Function language() As Boolean '开发一个语言函数,用于判断当前操作系统是否为英文
  3. language = (GetSystemDefaultLCID = &H409)
  4. End Function
复制代码
步骤2
创建名为“Summation”的工作表为例,如果在创建表时发现有同名工作表,那么需要提示用户,该提示需要自动适应当前系统的语系。那么在弹出对话框前需要调用language函数:

  1. Sub NewSheet() '创建新工作表,名为“Summation”
  2.     Dim sht As Worksheet
  3.     On Error Resume Next
  4.     Set sht = Sheets("Summation") '将工作表“Summation”赋予变量
  5.     If Err <> 0 Then '如果有错误(表示不存在“Summation”工作表)
  6.         Sheets.Add after:=Sheets(Sheets.Count) '那么在最末处新建一个工作表
  7.         Sheets(Sheets.Count).Name = "Summation" '改名为“Summation”
  8.     Else '否则
  9.         If language Then '如果系统是英文,则用英文提示用户
  10.             MsgBox "There has been one worksheet named “Summation”"
  11.         Else '否则用中文提示(中英文系统由函数计算得来)
  12.             MsgBox "已经有名为“Summation”的工作表"
  13.         End If
  14.     End If
  15. End Sub
复制代码
步骤3
光标置于代码中任意位置并按F5键执行,如果当前工作簿已经存在“Summation”工作表,将会弹出对话框提示用户。如果用户操作系统是中文,那么对话框如所示:
如果用户操作系统是英文,则对话框如所示:

=============================
上摘自《EXCEL2010编程与实践》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2011-2-8 13:44 | 显示全部楼层
回复

使用道具 举报

发表于 2011-2-8 20:03 | 显示全部楼层
回复

使用道具 举报

发表于 2011-2-9 09:00 | 显示全部楼层
“妖言惑众”
回复

使用道具 举报

发表于 2011-2-15 22:51 | 显示全部楼层
   收藏学习!
回复

使用道具 举报

发表于 2011-4-9 21:06 | 显示全部楼层
{:011:}{:011:}{:011:}{:011:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 20:26 , Processed in 6.333202 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表