Vba “本地化”;(空白)“;

Vba “本地化”;(空白)“;,vba,excel,localization,Vba,Excel,Localization,我想控制VBA中的切片器,并想使用以下命令检查是否选择了空值: If slicerCache.SlicerItems.Item("(blank)").selected = True 空值自动获取标签(空白)。在工作簿在非英语计算机上打开之前,所有这些都可以正常工作。例如,荷兰语的标签是(leeg),法语的标签是(vide) 如何获取此标签的本地化版本 在2009年提出的同一个问题中,没有任何答案 这是一个小技巧,可能有更好的方法,但它是实用的,适用于所有语言,前提是“空白”总是由起始打开参数和

我想控制VBA中的切片器,并想使用以下命令检查是否选择了空值:

If slicerCache.SlicerItems.Item("(blank)").selected = True
空值自动获取标签
(空白)
。在工作簿在非英语计算机上打开之前,所有这些都可以正常工作。例如,荷兰语的标签是
(leeg)
,法语的标签是
(vide)

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


在2009年提出的同一个问题中,没有任何答案

这是一个小技巧,可能有更好的方法,但它是实用的,适用于所有语言,前提是“空白”总是由起始打开参数和结束关闭参数表示,切片器列表中没有其他值同时包含起始打开参数和结束关闭参数

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

为了提高性能,最好使用left()和right(),因为括号必须是第一个和最后一个字符。编辑:看来我们有相同的想法;)这似乎确实很管用。你知道这是否适用于每种语言,特别是那些不使用“我们的”字母表的语言(例如汉语、俄语)?@Wlump,请参阅我在帖子中的警告。这就是我现在所能说的,没有直接测试的能力。这可能是一个安全的假设,空白将始终作为“([空白的本地语言版本])`