Ale*_*x O 5 excel vba excel-formula
我正在设计一组相关的excel文件,它们之间是相关的。目标是引用彼此文档的宏可以在任何给定的计算机/路径中工作。出于这个原因,我使用了一组相对路径,它可以让宏正常工作。
我使用了以下功能:
=+CELDA("nombrearchivo";$A$1)
Run Code Online (Sandbox Code Playgroud)
"nombredearchivo"是"filename"英文的意思。
这里的问题是,此功能仅在计算机设置为西班牙语时才有效,但是当文件传输到英语设置的计算机时,它会将 de function CELDA 转换为 CELL,而不是“nombrearchivo”。
为了解决这个问题,我曾考虑尝试在单元格中显示 Excel 设置的语言,然后用三种主要语言编写一个 if 函数,该函数将显示 nombrearchivo、文件名或任何其他语言的相同内容。
是否可以在单元格中显示设置 excel 所用的语言?
目标是宏可以在任何给定的计算机和路径上工作。
这将返回一个lang代码到这里了解LCID是什么..
并在此处获取所有 LCID 代码含义的列表
例如:1036 =法语 - 标准
dim lang_code as long
lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
Run Code Online (Sandbox Code Playgroud)
Application.LanguageSettings 文档在这里
这个答案完全来自这个来源:
https://www.mrexcel.com/forum/excel-questions/617870-language-code-french-spanish-spanish.html
因此,所有功劳均归原作者 Leith Ross 所有:
' Written: March 01, 2012
' Author: Leith Ross
' Summary: Converts a Language Code Identifier (LCID) into the language name.
Private Declare Function GetLocaleInfoA _
Lib "kernel32.dll" _
(ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String, _
ByVal cch As Long) _
As Long
Function GetLanguageName(ByVal LCID As Long) As String
Const LOCALE_SENGLANGUAGE As Long = &H1001
Const LOCALE_SENGCOUNTRY As Long = &H1002
Dim Buffer As String
Dim BuffSize As Long
Dim RetVal As Long
BuffSize = GetLocaleInfoA(LCID, LOCALE_SENGLANGUAGE, 0, 0)
Buffer = String(BuffSize, Chr(0))
RetVal = GetLocaleInfoA(LCID, LOCALE_SENGLANGUAGE, Buffer, BuffSize)
If RetVal > 0 Then GetLanguageName = Left(Buffer, BuffSize - 1)
End Function
Run Code Online (Sandbox Code Playgroud)
要测试它,只需输入一个单元格=GetLanguageName(1034)(十进制值),但它也适用于十六进制值,例如=GetLanguageName("&H40A")
我在 Excel 中得到了这个:
要获取您需要输入的十进制数,您可以使用如下内容:
Function GetLanguage() As String
GetLanguage = GetLanguageName(Application.LanguageSettings.LanguageID(msoLanguageIDUI))
End Function
Run Code Online (Sandbox Code Playgroud)
因此,在单元格中键入内容GetLanguage()将返回用户的语言。
希望您能根据您的需要进行调整。