2014-11-14 4 views
2

Я пытаюсь проверить, содержит ли мой выбор текста в excel надписи и символы, такие как ®™º. Мне удалось найти способ проверить верхний индекс, как показано ниже.Excel VBA - Проверьте, соответствует ли символ символам

For Each c In rngSel 
lChar = Len(c.Value) 
    For lCount = 1 To lChar 
     With c.Characters(lCount, 1).Font 

      'Superscript 
      If .Superscript Then 
      str_Test = str_Test & "" & lCount 
      isFlag = "Y" 
      .ColorIndex = 3 
      total_super_count = total_super_count + 1 

Любая идея, как я могу проверить, если символ равен символам, как указано выше. Любое предложение или ссылка ссылки высоко ценится.

EDITED

Columns("A:S").Select 
Rows("1:50").Select 
Set rngSel = Selection 
For Each c In rngSel 
lChar1 = Len(c.Value) 
    'For lCount = 1 To lChar 
    ' With c.Characters(lCount, 1).Font 
    For lCount1 = 1 To c.Characters.Count 
    With c.Characters(lCount1, 1) 


      'Test the character 
      If .Text Like "°" Then 
count_symbol = count_symbol + 1 
      'Do something 
       .Font.Color = vbRed 

      End If 
     End With 
    Next lCount1 
Next c 

enter image description here enter image description here

ответ

2

Если вы ищете эти конкретные персонаж, вы просто цикл по каждому символу и сравнить ваш список символов, для которых вы ищете. например:


For Each C In R 
    For I = 1 To C.Characters.Count 
     With C.Characters(I, 1) 

      'Test the character 
      If .Text Like "[®™º]" Then 

      'Do something 
       .Font.Color = vbRed 

      End If 
     End With 
    Next I 
Next C 

Следует отметить, что конкретные символы вы показываете выше, что вы ищете покажет font.superscript = FALSE, поскольку они уже «выше линии» в силу характер самого персонажа.

+0

, он бросает мне ошибку, как на снимке экрана в моем вопросе. –

+0

@ chinna_2 Затем найдите проблему в своем неопубликованном коде, где вы установите R и C в нужные диапазоны. –

+0

@ chinna_82 Что находится в 'c', когда вы получаете ошибку? –

0

Вы можете получить значение chr характера, что-то вроде Asc(character)

Если просмотреть http://www.gtwiki.org/mwiki/?title=VB_Chr_Values вы увидите список chr значения.

Просто прокрутите все символы строки и получите значение chr, а если оно выше 122, то это символ!

Также обратите внимание: может быть несколько других символов (ниже 122), которые вы хотите проверить, так что просмотрите список полностью. EG, от 0 до 47!

Итак, в моем листе Excel, A1 имеет значение 5™B

Это делает то, что вы хотите

Sub DetectSymbols() 

Dim val As String 
val = Range("A1").Value     'Get value or walk the plank ! 

Dim i As Integer 
For i = 1 To Len(val)     'Loop through each character in string, ya sea dogs 
    Dim c As String 
    c = Mid(val, i, 1) 
    Dim chrVal As Integer 
    chrVal = Asc(c) 
    If (chrVal > 122) Then    'Only checking > 122 to keep it simple 
     MsgBox (c & " is a symbol")  'Aye aye, captain, we found the treasure! 
    End If 
Next i 

End Sub 
+0

этот работа хорошо, но только проверка на A1. Как мне изменить, если я хочу получить выбор. Я попробовал Range («A1», «C10») и не работал. Пожалуйста посоветуй. –

+0

@ chinna_82, просто петля? Set rng = Range ("A1: A3") Для каждой ячейки In rng Следующая ячейка – Dave

+0

Я обновил вопрос с вашим предложением, бросил мне ** Неверный вызов или аргумент процедуры ** в 'c = Mid (cell, i, 1) ' –

Смежные вопросы