Добрый день. Подскажите пожалуйста, как должен выглядеть код для условия : Начало. 1. Если в выбранной ячейке есть символ "_", то все что идет до следующего пробела (" ") сделать подстрочным, символ "_" удалить. 2. И 3. Если в выбранной ячейке есть символ "^", то все что идет до следующего пробела (" ") сделать надстрочным, символ "^" удалить. 4. После удаления, проверить, не остались ли еще символы "_" и "^" в ячейке, Если они есть, goto 1. Конец.
Надеюсь, что объяснил доступно : )
Добрый день. Подскажите пожалуйста, как должен выглядеть код для условия : Начало. 1. Если в выбранной ячейке есть символ "_", то все что идет до следующего пробела (" ") сделать подстрочным, символ "_" удалить. 2. И 3. Если в выбранной ячейке есть символ "^", то все что идет до следующего пробела (" ") сделать надстрочным, символ "^" удалить. 4. После удаления, проверить, не остались ли еще символы "_" и "^" в ячейке, Если они есть, goto 1. Конец.
Не совсем. То есть, сколько в строке символов, столько и превращений? А лучше, согласно правил, файлик с примером всех возможных вариантов, как есть - как надо.
Не совсем. То есть, сколько в строке символов, столько и превращений? А лучше, согласно правил, файлик с примером всех возможных вариантов, как есть - как надо.Wasilich
Сообщение отредактировал Wasilic - Среда, 25.11.2015, 11:44
да, количество символов равно количеству превращений
В ожидании примера экспериментировал. У меня не получилось, при удалении следующего символа, предыдущая часть шрифта почему то становится в исходное положение. Вот пробный пример.
[vba]
Код
Sub www() Dim I&, ST$, NS&, PR&, PS& For I = 1 To Range("A" & Rows.Count).End(xlUp).Row ST = Cells(I, 1) PS = InStr(ST, "_") NS = InStr(ST, "^") Do If PS > 0 Then PR = InStr(Mid(ST, PS), " ") - 1 If PR <= 0 Then PR = Len(ST) - PS + 1 Cells(I, 1) = Replace(Cells(I, 1), "_", "", 1, 1) With Cells(I, 1).Characters(Start:=PS, Length:=PR).Font .Subscript = True End With End If If NS > 0 Then PR = InStr(Mid(ST, NS), " ") - 1 If PR <= 0 Then PR = Len(ST) - NS + 1 Cells(I, 1) = Replace(ST, "^", " ", 1, 1) With Cells(I, 1).Characters(Start:=NS, Length:=PR).Font .Superscript = True End With End If ST = Cells(I, 1) PS = InStr(ST, "_") NS = InStr(ST, "^") If PS = 0 And NS = 0 Then Exit Do Loop Next End Sub
[/vba]
Докумекаю, выложу. Или может кто другой докумекает.
да, количество символов равно количеству превращений
В ожидании примера экспериментировал. У меня не получилось, при удалении следующего символа, предыдущая часть шрифта почему то становится в исходное положение. Вот пробный пример.
[vba]
Код
Sub www() Dim I&, ST$, NS&, PR&, PS& For I = 1 To Range("A" & Rows.Count).End(xlUp).Row ST = Cells(I, 1) PS = InStr(ST, "_") NS = InStr(ST, "^") Do If PS > 0 Then PR = InStr(Mid(ST, PS), " ") - 1 If PR <= 0 Then PR = Len(ST) - PS + 1 Cells(I, 1) = Replace(Cells(I, 1), "_", "", 1, 1) With Cells(I, 1).Characters(Start:=PS, Length:=PR).Font .Subscript = True End With End If If NS > 0 Then PR = InStr(Mid(ST, NS), " ") - 1 If PR <= 0 Then PR = Len(ST) - NS + 1 Cells(I, 1) = Replace(ST, "^", " ", 1, 1) With Cells(I, 1).Characters(Start:=NS, Length:=PR).Font .Superscript = True End With End If ST = Cells(I, 1) PS = InStr(ST, "_") NS = InStr(ST, "^") If PS = 0 And NS = 0 Then Exit Do Loop Next End Sub
[/vba]
Докумекаю, выложу. Или может кто другой докумекает. Wasilich
Сообщение отредактировал Wasilic - Среда, 25.11.2015, 14:34
Огромное спасибо, вы мне очень помогли! Чтобы уж совсем меня порадовать, не могли бы вы описать метод, при помощи которого была выполнена задача? Я впервые сталкиваюсь с автоматическим выполнением макроса, даже не знал что такое существует в природе!
Огромное спасибо, вы мне очень помогли! Чтобы уж совсем меня порадовать, не могли бы вы описать метод, при помощи которого была выполнена задача? Я впервые сталкиваюсь с автоматическим выполнением макроса, даже не знал что такое существует в природе!Phaser_93