Blu*_*tor 3 excel vba function excel-formula
我如何制作一个可以在每种语言中使用的格式化日期的函数?我想实现以下功能:
=CONCATENATE(TEXT(C8;"TT.MM.JJJJ");"/";G8)
Run Code Online (Sandbox Code Playgroud)
这里的问题是,我使用英文客户端,但因为我是德国人,excel 迫使我使用 T 表示日,J 表示年。我认为这会导致位于英国的 PC 出现问题(例如)。
我认为[$-409]行不通,因为我仍然必须使用 T 表示天,J 表示一年。对此(功能方面)有什么好的解决方案吗?
如果您传入公式的值,""则无法根据本地化设置进行更改。
一个很好的方法是在 VBA 中使用自定义函数,"TT.MM.JJJJ"如果您在德国和"DD.MM.YYYY"英国,则返回。
Public Function CorrectString() As String
Select Case Application.International(XlApplicationInternational.xlCountryCode)
Case 1
CorrectString = "DD.MM.YYYY"
Case 49
CorrectString = "TT.MM.JJJJ"
Case Else
CorrectString = "ERROR"
End Select
End Function
Run Code Online (Sandbox Code Playgroud)
将允许您像这样调用函数:
=CONCATENATE(TEXT(C8;CorrectString());"/";G8)
Run Code Online (Sandbox Code Playgroud)
根据 excel 语言,它会提供德语或英语版本。
为了简化公式,请尝试仅调用:
=TEXT(21322;CorrectString())
Run Code Online (Sandbox Code Playgroud)
这应该返回17.05.1958。
@Dan 在评论中提到的区域语言来源:https ://bettersolutions.com/vba/macros/region-language.htm
或运行此命令以查看当前 Excel 的相应编号:
MsgBox xlApplicationInternational.xlCountryCode
Run Code Online (Sandbox Code Playgroud)