2015-11-23 3 views
3

Я хочу контролировать слайсер в VBA и хотите проверить, является ли или не выбраны пустые значения, используя:Локализация «(пробел)»

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

Пустые значения автоматически получают метку (blank). Все это прекрасно работает, пока книга не будет открыта на неанглийском компьютере. Например. на голландском языке - (leeg), а на французском языке - (vide).

Как я могу получить локализованную версию этого ярлыка?

В this link тот же вопрос был задан в 2009 году, без каких-либо ответов.

ответ

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(), поскольку скобки должны быть первым и последним символами. EDIT: кажется, что у нас была та же идея;) – cboden

+0

Это, похоже, действительно работает. Есть ли у вас какая-либо идея, будет ли это работать для каждого языка, особенно тех, которые не используют «наш» алфавит (например, китайский, русский)? – Wlump

+0

@Wlump, пожалуйста, обратитесь к моим предостережениям в сообщении. Это все, что я могу сказать в этой точке без возможности прямого тестирования. Вероятно, это безопасное предположение, что пробелы всегда будут задаваться как «([версия для местного языка пустого])' –