ET疑难千寻千解丛书之EXCEL2010编程与实践 罗刚君 章兰新 黄朝阳 编著
疑难22
如何让程序兼容英文和中文系统 假设只有英文和简体中文两种需求,如何实现VBA程序在英文系统中执行时显示英文,而在中文系统中执行则显示中文?。 è解决方案 利用API函数判断当前计算机的语言系统,在需要显示文字时,根据实际语言调用不同的语句。与疑难21中兼容Excel多版本时采用相同思路。 í操作方法 步骤1
编写一个判断操作系统语言的自定义函数,其值为布尔值,代码如下:
- Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
- Function language() As Boolean '开发一个语言函数,用于判断当前操作系统是否为英文
- language = (GetSystemDefaultLCID = &H409)
- End Function
复制代码步骤2
以创建名为“Summation”的工作表为例,如果在创建表时发现有同名工作表,那么需要提示用户,该提示需要自动适应当前系统的语系。那么在弹出对话框前需要调用language函数:
- Sub NewSheet() '创建新工作表,名为“Summation”
- Dim sht As Worksheet
- On Error Resume Next
- Set sht = Sheets("Summation") '将工作表“Summation”赋予变量
- If Err <> 0 Then '如果有错误(表示不存在“Summation”工作表)
- Sheets.Add after:=Sheets(Sheets.Count) '那么在最末处新建一个工作表
- Sheets(Sheets.Count).Name = "Summation" '改名为“Summation”
- Else '否则
- If language Then '如果系统是英文,则用英文提示用户
- MsgBox "There has been one worksheet named “Summation”"
- Else '否则用中文提示(中英文系统由函数计算得来)
- MsgBox "已经有名为“Summation”的工作表"
- End If
- End If
- End Sub
复制代码步骤3
光标置于代码中任意位置并按【F5】键执行,如果当前工作簿已经存在“Summation”工作表,将会弹出对话框提示用户。如果用户操作系统是中文,那么对话框如图所示: 如果用户操作系统是英文,则对话框如图所示:
============================= 以上摘自《EXCEL2010编程与实践》 |