"(空白)"的本地化

3

我希望在VBA中控制一个切片器,并检查是否选择了空值,使用以下代码:

If slicerCache.SlicerItems.Item("(blank)").selected = True

空值自动标记为 (blank)。这一切都很好,直到在非英语计算机上打开工作簿。例如,在荷兰语中,标签是(leeg),而在法语中标签是(vide)

如何获取此标签的本地化版本?

此链接中,2009年提出了完全相同的问题,但没有得到答案。

1个回答

0

这是一种有点取巧的方法,可能存在更好的方法,但它是实用的,并且适用于所有语言,只要“空白”始终由起始开括号和结束闭括号表示,并且切片器列表中没有其他值包含起始开括号和结束闭括号。

For Each si In SlicerCache.SlicerItems

    'EDIT: I originally wrote this, but the one below is more precise
    'If InStr(si.Name, "(") And InStr(si.Name, ")") Then
    If Left(si.Name,1) = "(" And Right(si.Name,1) = ")" Then 

        If si.Selected = True Then MsgBox si.Name & " is set to True"

    End If

Next

1
为了改进,也许最好使用left()和right(),因为括号必须是第一个和最后一个字符。编辑:看起来我们有相同的想法;) - cboden
这似乎确实很好用。你有没有想过这是否适用于每种语言,特别是那些不使用“我们”的字母表的语言(例如中文、俄语)? - Wlump
@Wlump,请参考我在帖子中提到的注意事项。在没有直接测试的能力的情况下,这就是我所能说的了。很可能可以安全地假设空白将始终以“(空白的本地语言版本)”的形式给出。 - Scott Holtzman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接