Страницы: 1
RSS
Разные шрифты в одной ячейке. Как правильно организовать?
 
Ребята, подскажите,как правильно прописать в макросе разные шрифты в одной ячейке.  
Но при это есть нюансы:  
В ячейке находятся группы символов и цифр.  
буква u - шрифт Wingdings 3  
     О - шрифт Times New Roman  
     t - шрифт Wingdings 3  
    цифры - шрифт Times New Roman  
Проблема в том, что пользователь может занести в ячейку любую комбинацию букв, и программа дополнительно может внести в эту ячейку любое количество цифр. Так как грамотнее сделать, чтоб программа сама распознавала к какому символу какой шрифт присвоить???
 
А почему бы Вам не попробовать отписываться в создаваемых Вами темах?
Я сам - дурнее всякого примера! ...
 
Не понял Ваших слов,KukLP...  
Поясните,пожалуйста
 
http://www.planetaexcel.ru/forum.php?thread_id=26321  
Ваша тема?
Я сам - дурнее всякого примера! ...
 
Моя тема. Прошу прощения, что не поблагодарил за помощь....  
Я эту процедуру прописал немного по другому...  
 
А сейчас дальше работаю над ней....Вот и встал следующий вопрос
 
Клубов, у Вас не благодарность вымаливают. Просто нужно знать - подошло решение или нет. И пометить тему соответствующим образом.
 
Ок. Буду иметь ввиду....
 
Я совсем недавно. на форуме. и таких тонкостей не знал. Так что еще раз прошу прощения. И выучу этот урок.  
 
Так вот. Возвращаясь к моей нынешней теме.  
Есть код вывода в ячейку:  
Dim s1 As String, s2 As Style  
   s1 = Cells(i, j)  
   i_old = i  
   t = t  
   t_pr = t_pr  
   Cells(i, j) = s1 + "" & t_pr & "" + "" & t & ""  
   If s1 = "uO" Then  
   With Cells(i, j).Characters(Start:=1, Length:=1).Font  
       .Name = "Wingdings 3"  
       End With  
   With Cells(i, j).Characters(Start:=2, Length:=1).Font  
       .Name = "Times New Roman"  
       End With  
   With t_pr.Font  
       .Name = "Times New Roman"  
       .Subscript = True  
        End With  
    With t.Font  
       .Name = "Times New Roman"  
       .Superscript = True  
        End With  
 
с s1 все понятно и просто.  
Как можно организовать, чтоб t и t_pr выводились шрифтом "Times New Roman", и при этом t_pr был еще и подстрочным, а t - надстрочным...
 
{quote}{login=Клубов}{date=07.04.2011 09:17}{thema=}{post}Так вот. Возвращаясь к моей нынешней теме.{/post}{/quote}  
Сначала разберёмся с предыдущей. Что тут непонятного?
 
Выполнено!
 
Товарищи, сделал вот так. вроде все символы распознает как нужно. Только мои числа t и t_pr не выводит в нижний (t_pr) и верхний (t) регистры.  
Выводит только полностью эти оба значения в нижний(((  
 
With Cells(i, j).Characters(t_pr).Font  
       .Name = "Times New Roman"  
       .Subscript = True  
       .Superscript = False  
         
        End With  
    With Cells(i, j).Characters(t).Font  
       .Name = "Times New Roman"  
       .Subscript = False  
       .Superscript = True  
                         
       End With  
       With Cells(i, j).Characters(Start:=1, Length:=1).Font  
       .Name = "Wingdings 3"  
       .Subscript = False  
       .Superscript = False  
       End With  
   With Cells(i, j).Characters(Start:=2, Length:=1).Font  
       .Name = "Times New Roman"  
       .Subscript = False  
       .Superscript = False  
       End With
 
?
 
Клубов, Вы не каетесь. В вышеупомянутой теме от Вас добивались файла, здесь опять выложив огрызок кода Вы сидите и ждете, что кто-то из экстрасенсов по огрызку угадает, почему оно у Вас не работает. Файл давайте с Вашим макросом иначе ожидание растянется. Правила только прочитайте. Пункт 3.
Я сам - дурнее всякого примера! ...
 
Выкладываю.  
Процедура прописана в модуле РасчетРасписания  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
М-да... Мне так и не удалось ни разу войти в участки кода форматирования. Но кое-что понял. Например:  
Cells(i, j).Characters(t).Font  
Вы думаете это найдет число t в ячейке и отформатирует его? Не-а. Это будет искать символ с порядковым номером t и его уже форматировать. Если символа с таким номером нет(их меньше в ячейке, например), то просто ничего не произойдет. То есть в место t Вам нужно искать позицию t в ячейке и длину t. То же и с  
Cells(i, j).Characters(t_pr).Font.  
А так все работает, см. пример(макрос в модуле1)  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
Я сам - дурнее всякого примера! ...
 
Прошу прощения, на размер не глянул.
Я сам - дурнее всякого примера! ...
 
Клубов, я же Вас в правила отсылал, именно в тот пункт. И Вы тут же выложили 160 кб. И я из-за Вас...
Я сам - дурнее всякого примера! ...
 
KukLP, спасибо. Я так уже пробовал делать...мне это не совсем подходит....  
Дело в том, что у меня в ячейке может содержаться разное количество символов....  
Количество букв колеблется от 1 до 3. а цифр в нижнем регистре от 1 до 5, а также в верхнем....  
Моя программа распознавая сочетание букв, выдает набор чисел.....  
Надеюсь,понятно выразился))))  
 
Есть что-нибудь на этот счет?
 
А что еще? Вы прочитали сообщение от 08.04.2011, 11:49? Пока Вы не станете вычислять позицию и длину t, t_pr, у Вас ничего нормально работать не будет.
Я сам - дурнее всякого примера! ...
 
Значит провернуть такую штуку никак нельзя????  
Ведь у меня программа сама считает время......и записывает его в эту ячейку....а его значение колеблется от 1 цифры до 5....и я не могу угадать какое оно будет в какой ячейке....вот в этом то и проблема...  
 
Может есть какая либо другая возможность осуществить расположение t над t_pr в одной ячейке...и привести их виду:  
--t  
uO  
--t_pr
 
Да кто сказал, что нельзя? Вы читаете, что я пишу? Вычислять надо. Например, грубо так:  
       f = InStr(1, Cells(i, j), CStr(t))  
       If f <> 0 Then  
       With Cells(i, j).Characters(Start:=f, Length:=Len(CStr(t))).Font  
           .Name = "Times New Roman"  
           .Subscript = True  
       End With  
       End If  
и т.д.
Я сам - дурнее всякого примера! ...
 
Не пойму, к чему танцы с бубнами? А что нельзя обучить своих пользователей пользоваться клавиатурными сочетаниями?    
К примеру Alt+17 или Alt+9 (цифры вводить на доп.клавиатуре - та что справа).
 
Спасибо!  
Все очень даже хорошо работает.
 
...
 
Работающая программа в модуле расчет расписания.  
Всем спасибо.
 
a = InStr(1, Cells(i, j), CStr(t_pr))  
               If a <> 0 Then  
               With Cells(i, j).Characters(Start:=a, Length:=Len(CStr(t_pr))).Font  
               .Name = "Times New Roman"  
               .Subscript = True  
               End With  
               End If  
                 
               f = InStr(1, Cells(i, j), CStr(t))  
               If f <> 0 Then  
               With Cells(i, j).Characters(Start:=f, Length:=Len(CStr(t))).Font  
               .Name = "Times New Roman"  
               .Superscript = True  
               End With  
               End If  
А если t_pr и t одинаковые? Что по-Вашему получится?  
Правильней:  
f = InStr(a+Len(CStr(t_pr)))-1, Cells(i, j), CStr(t))
Я сам - дурнее всякого примера! ...
 
Лишняя скобка, так:  
f = InStr(a + Len(CStr(t_pr)) - 1, Cells(i, j), CStr(t))
Я сам - дурнее всякого примера! ...
 
Спасибо.  
Только они одинаковыми никак не получаться, если Вы имеете ввиду численное значение, так как они суммированием получаются....  
 
Вот вопрос сейчас. я в который раз пытаюсь закрыть эту тему (синим треугольником) и ни в какую...не помечается...
 
{quote}{login=Клубов}{date=11.04.2011 04:15}{thema=}{post}я в который раз пытаюсь закрыть эту тему (синим треугольником) и ни в какую...не помечается...{/post}{/quote}Это модераторы сделают.
Страницы: 1
Читают тему
Loading...