Страницы: 1 2 След.
RSS
Форматировать ячейку с формулой с помощью макроса
 
Мне нужно форматировать ячейку с формулой. Знаю, что формула не форматируется, можно ли это реализовать макросом?
Вот код.
Код
With Range("A19").Value = "=""1.1. Обязательство Субагента перед Агентом по перечислению выручки," _
&" полученной от реализации перевозок по договору №____ от « 28 » августа 20 15 года," _
&" составляет""&"" ""&'[Реестр грузовых авианакладных копия1.xlsm]Итоговая декада'!R13C15&"" ""&'[Реестр грузовых авианакладных копия1.xlsm]Итоговая декада'!R14C15&"",""&"" без НДС."""
a = Split(.Value, " ")
        For i = 0 To UBound(a)
            Select Case i
            Case 4, 6, 8, 12, 14, 16 'это номера слов разделенных пробелом, от 0 и которые нужно форматировать.'
                With .Characters(b + 1, Len(a(i))).Font
                    .Italic = True
                    .Underline = True
                End With
            End Select
            b = b + Len(a(i)) + 1
        Next
   End With
Изменено: Николай Павлов - 28.07.2021 18:16:56
 
Если вы все равно вставляете что-либо макросом, то и вставляйте готовые значения и форматируйте.
По вопросам из тем форума, личку не читаю.
 
БМВ, извините, я не силен в эксель и поэтому не совсем понимаю, что вы имеете в виду.
 
один из вариантов
Код
With Range("A19")
.FormulaR1C1 = "=""1.1. Обязательство Субагента перед Агентом по перечислению выручки," _
&" полученной от реализации перевозок по договору №____ от « 28 » августа 20 20 года," _
&" составляет""&"" ""&'[Реестр грузовых авианакладных копия1.xlsm]Итоговая декада'!R13C15&"" ""&'[Реестр грузовых авианакладных копия1.xlsm]Итоговая декада'!R14C15&"",""&"" без НДС."""
.Formula=.Value
Изменено: Николай Павлов - 28.07.2021 18:17:09
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо вам, код работает, но вот никак не могу правильно подобрать номера слов, вроде по порядку считаю, но почему то форматируется не то, что мне нужно.
 
возьмите ваше значение и разбейте по словам через инструмент текст по столбцам с разделителем пробел
номера столбцов за минусом 1 дадут вам то что нужно.
По вопросам из тем форума, личку не читаю.
 
БМВ, извините, что туплю, я пробовал сделать как вы сказали, просто не могу понять принцип форматирования, он как то в разброс форматирует  
Изменено: Ибрагим Белхороев - 15.06.2021 17:07:00
 
БМВ, смотрите я разбил значение, чтобы понять порядок слов, вот "1.1" у меня как отдельное слово, тогда
Код
Case 0
With .Characters(b + 1, Len(a(i))).Font
                    .Italic = True
                    .Underline = True
                End With
            End Select
            b = b + Len(a(i)) + 1
        Next
End With            

должен форматировать "1.1", но в итоге он вообще другое форматирует, если я правильно понял с минус 1 это

Код
Case 0
With .Characters(b - 1, Len(a(i))).Font
                    .Italic = True
                    .Underline = True
                End With
            End Select
            b = b + Len(a(i)) - 1
        Next
End With 

но и так он форматирует непонятно.

Изменено: Ибрагим Белхороев - 15.06.2021 17:27:03
 
не правильно поняли
на первом шаге B=0 и первое слово начнется с первого символа то есть B+1 и динной LEN(a(0))
По вопросам из тем форума, личку не читаю.
 
БМВ, вот так
Код
Case 0
                With .Characters(b = 0, Len(a(i))).Font
                    .Italic = True
                    .Underline = True
                End With
            End Select
            b = b + Len(a(i))
        Next
   End With
так он форматирует с первого слова, но проблема в том, что после этого форматируется все содержимое ячейки?
 
Код
With .Characters(b = 0, Len(a(i))).Font
 будет означать
Код
 With .Characters(True, Len(a(i))).Font
и воспримется как
Код
With .Characters(-1, Len(a(i))).Font


так не работает?
Код
With .Characters(b +1, Len(a(i))).Font
только
Код
b = b + Len(a(i))+1
По вопросам из тем форума, личку не читаю.
 
БМВ, так он
Код
With .Characters(b +1, Len(a(i))).Font
Код
b = b + Len(a(i))+1
форматирует не с первого слова, а вот так "1.1. Обязательство Субагента перед Агентом по перечислению выручки, полученной от реализации перевозок по договору №____ от « 28 » августа 20 20 года, составляет 0 рублей, без НДС."
Изменено: Николай Павлов - 28.07.2021 18:17:25
 
вы что словом называете? Перефразируем - это набор символов без пробелов.
Изменено: БМВ - 16.06.2021 09:17:32
По вопросам из тем форума, личку не читаю.
 
БМВ, да, набор символов без пробела. Но как почему то набор символов без пробела форматируется некорректно.
 
БМВ, то, что нужно форматировать я выделил курсивом и подчеркнул "1.1. Обязательство Субагента перед Агентом по перечислению выручки, полученной от реализации перевозок по договору №____ от « 21 » августа 20 15 года, составляет 0 рублей, без НДС."
Изменено: Николай Павлов - 28.07.2021 18:17:39
 
БМВ, видимо этим кодом не удастся форматировать то, что мне нужно?
 
БМВ, весь код у меня такой
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With Range("A8")
    .Value = "за период с " & Format(DateSerial(Year(Now), Month(Now) + 0, 0) + 1, "[$-FC22]« D » MMMM 20 YY г.") & " по " & Format(DateSerial(Year(Now), Month(Now) + 0, 0) + 10, "[$-FC22]« D » MMMM 20 YY г.")
    a = Split(.Value, " ")
        For i = 0 To UBound(a)
            Select Case i
            Case 4, 6, 8, 12, 14, 16
                With .Characters(b + 1, Len(a(i))).Font
                    .Italic = True
                    .Underline = True
                End With
            End Select
            b = b + Len(a(i)) + 1
        Next
   End With
With Range("A19")
.FormulaR1C1 = "=""1.1. Обязательство Субагента перед Агентом по перечислению выручки," _
& " полученной от реализации перевозок по договору №___ от « 21 » августа 20 15 года," _
& " составляет""&"" ""&'[Реестр грузовых авианакладных копия1.xlsm]Итоговая декада'!R13C15&"" ""&'[Реестр грузовых авианакладных копия1.xlsm]Итоговая декада'!R14C15&"",""&"" без НДС."""
.Formula = .Value
a = Split(.Value, " ")
        For i = 0 To UBound(a)
            Select Case i
            Case 0
                With .Characters(b + 1, Len(a(i))).Font
                    .Italic = True
                    .Underline = True
                End With
            End Select
            b = b + Len(a(i)) + 1
        Next
   End With
End Sub
Может причина в том, что они относятся к одному событию?
Изменено: Николай Павлов - 28.07.2021 18:17:57
 
Цитата
Ибрагим Белхороев написал:
видимо этим кодом не удастся форматировать то, что мне нужно?
Видимо нет.
Цитата
Ибрагим Белхороев написал:
Может причина в том, что они относятся к одному событию?
Ни в коем разе. В том, что они относятся к одному юзеру.
 
RAN, вот незадача, уже несколько дней пытаюсь реализовать эту задачу, но никак не получается, вроде ничего сверхъестественного я не хочу.
 
Цитата
Ибрагим Белхороев написал:
Но как почему то набор символов без пробела форматируется некорректно.
Если вы форматируете первое слово (индекс в массиве 0), то почему вы считаете, что должно отформатироваться 15 слово (индекс в массиве 14)?
Или у вас с арифметикой нелады, и других чисел вы не знаете?
БМВ все разжевал, на ложку положил, в рот вам засунул... Проглотите уже.
 
а чего удивительного если вы не следуете рекомендациям. В текст по столбцам разделили? результат видели?
Обратили внимание на то что не все разделилось как надо?
часть пробелов не просто пробелы, а неразрывные пробелы.
измените
Код
a = Split(Replace(.Value,chr(160)," ") , " ")


Цитата
RAN написал:
все разжевал, на ложку положил, в рот вам засунул...
фиг там, если разжевал, то сам и проглочу :-) .
Изменено: БМВ - 16.06.2021 11:19:09
По вопросам из тем форума, личку не читаю.
 
Ведмедик, привет. А где ты chr(160) сыскал?
 
RAN, "договору №13" , "« 28 »"
По вопросам из тем форума, личку не читаю.
 
БМВ, я извиняюсь, я пытаюсь разобраться самостоятельно, просто у меня начинающий уровень владения экселем.
Я вставил этот код
Код
a = Split(Replace(.Value,chr(160)," ") , " ")
Но что-то не получается все равно, может я скину файл, так будет проще понять, что я делаю неправильно. В файле 2 данные, на которые ссылается файл 1 при открытии.
Изменено: Ибрагим Белхороев - 16.06.2021 13:38:37
 
И где тут 160?
 
RAN, в №15 было.
По вопросам из тем форума, личку не читаю.
 
БМВ, можете помочь, если есть возможность, я в сообщении #24 прикрепил файлы.
 
БМВ, я заменил на этот код
Код
a = Split(Replace(.Value,chr(160)," ") , " ")
но результат тот же.
 
Цитата
Ибрагим Белхороев написал:
но результат тот же.
ну B то обнулять после первого этапа надо.
По вопросам из тем форума, личку не читаю.
 
БМВ, так имеете в виду?
Код
With Range("A19")
.FormulaR1C1 = "=""1.1. Обязательство Субагента перед Агентом по перечислению выручки," _
& " полученной от реализации перевозок по договору №___ от « 21 » августа 20 15 года," _
& " составляет""&"" ""&'[Реестр грузовых авианакладных копия1.xlsm]Итоговая декада'!R13C15&"" ""&'[Реестр грузовых авианакладных копия1.xlsm]Итоговая декада'!R14C15&"",""&"" без НДС."""
.Formula = .Value
a = Split(Replace(.Value, Chr(160), " "), " ")
        For i = 0 To UBound(a)
            Select Case i
            Case 0
                With .Characters(b=0, Len(a(i))).Font 'вот тут b=0?'
                    .Italic = True
                    .Underline = True
                End With
            End Select
            b = b + Len(a(i)) + 1
        Next
   End With
Изменено: Николай Павлов - 28.07.2021 18:18:15
Страницы: 1 2 След.
Читают тему (гостей: 1)
Наверх