powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Vba.Excel Ошибка формулы условного форматирования
7 сообщений из 7, страница 1 из 1
Vba.Excel Ошибка формулы условного форматирования
    #39319216
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
есть следующий код:
Код: vbnet
1.
2.
3.
4.
5.
set rArea = range("A3:J18")
sCol = "K"
sRow = "3"
sFormula1 = "=" & "ЕСЛИ($" & sCol & sRow & ";1;0)"
Set fcD = rArea.FormatConditions.Add(Type:=xlExpression, Formula1:=sFormula1)



установленное эти кодом условие (формула) выглядит т.о.:
=ЕСЛИ($K65519;1;0)


Как сделать,чтобы условие выглядело так:
=ЕСЛИ($K3;1;0)

???
...
Рейтинг: 0 / 0
Vba.Excel Ошибка формулы условного форматирования
    #39319227
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos,

перед установкой УФ выделить надо первую ячейку диапазона, к которому применяется УФ. В Вашем случае это А3:
Код: vbnet
1.
2.
3.
4.
5.
6.
set rArea = range("A3:J18")
rArea.Cells(1,1).Select
sCol = "K"
sRow = "3"
sFormula1 = "=" & "ЕСЛИ($" & sCol & sRow & ";1;0)"
Set fcD = rArea.FormatConditions.Add(Type:=xlExpression, Formula1:=sFormula1)
...
Рейтинг: 0 / 0
Vba.Excel Ошибка формулы условного форматирования
    #39319263
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,
спасибо большое, помогло.

как говориться лучшее - враг хорошему.

появились вопросы:
1. как обойтись без выделения?
2. не нравится составление формулы для русского офиса - в английском работать не будет.
можно ли задать формулу в английской мнемонике?
Код: vbnet
1.
sFormula1 = "=" & "IF($" & sCol & sRow & "=1" & ";1;0)"


не работает.
3. можно ли использовать стандартные функции листа?
Код: vbnet
1.
sFormula1 = Application.WorksheetFunction.And(ws.Cells(iRow, iCol))


не работает.
...
Рейтинг: 0 / 0
Vba.Excel Ошибка формулы условного форматирования
    #39319276
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos,

1. Нет.
2. Только проверкой локализации. Что-то вроде:
Код: vbnet
1.
2.
3.
4.
5.
If Application.LanguageSettings.LanguageID(msoLanguageIDInstall) = 1049 Then
'используем русские формулы
Else
'используем английские
End If


УФ это один из инструментов, который чувствителен к локализации. И даже при считывании формулы в разных локализациях будут разные формулы. В нем нет понятия FormulaLocal, т.к. она всегда там Local :)
3. Вообще не понял смысла. Ведь WorksheetFunction возвращает статичное значение. А УФ должно как-то же в зависимости от диапазона проверять выполнение условия. Именно поэтому используется формула, нет?
...
Рейтинг: 0 / 0
Vba.Excel Ошибка формулы условного форматирования
    #39319302
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bobgos1. как обойтись без выделения?
Работать с формулами в стиле R1C1 (он вообще больше соответствует логике электронной таблицы, чем стиль А1).
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
  Set rArea = Range("A3:J18")
  sCol = 11 '"K"
  'sRow = "3" не нужно
  sFormula1 = "=ЕСЛИ(RC" & sCol & ";1;0)" 'формула в стиле R1C1
  refStyle = Application.ReferenceStyle   'сохранить текущий стиль ссылок
  Application.ReferenceStyle = xlR1C1     'назначить стиль ссылок R1C1
  Set fcD = rArea.FormatConditions.Add(Type:=xlExpression, Formula1:=sFormula1)
  Application.ReferenceStyle = refStyle   'вернуть стиль ссылок
...
Рейтинг: 0 / 0
Vba.Excel Ошибка формулы условного форматирования
    #39319327
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bobgos2. не нравится составление формулы для русского офиса - в английском работать не будет.
можно ли задать формулу в английской мнемонике?
Нет, как уже написал ув. The_Prist. Но можно "попросить" сам Excel перевести формулу на локальный язык - записать ее в ячейку и считать формулу на локальном языке. Лучше делать это в новой пустой книге, а не в этой, чтобы исключить проблемы, связанные с защитой листа или книги.
Итого ответ на 1) и 2)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Sub Bobgos()
  Set rArea = Range("A3:J18")
  sCol = "K"
  sRow = "3"
  
  Application.ScreenUpdating = False              'исключить мерцание экрана
  Application.EnableEvents = False                'отключить обработку событий (в т.ч. события "новая книга")
  With Workbooks.Add(xlWBATWorksheet)             'новая книга с одним листом
    With .Sheets(1).Range("A3")                   'та же ячейка
      .Formula = "=IF($" & sCol & sRow & ",1,0)"  'записать формулу на английском в стиле А1
      sFormula1 = .FormulaR1C1Local               'считать формулу на локальном языке в стиле R1C1
    End With
    .Close 0                                      'закрыть без сохранения
  End With
  Application.ScreenUpdating = True               'разрешить обновление экрана
  Application.EnableEvents = True                 'включить обработку событий
  
  refStyle = Application.ReferenceStyle   'сохранить текущий стиль ссылок
  Application.ReferenceStyle = xlR1C1     'назначить стиль ссылок R1C1
  Set fcD = rArea.FormatConditions.Add(Type:=xlExpression, Formula1:=sFormula1)
  Application.ReferenceStyle = refStyle   'вернуть стиль ссылок
      
  fcD.Interior.Color = vbYellow           'например

End Sub
...
Рейтинг: 0 / 0
Vba.Excel Ошибка формулы условного форматирования
    #39320573
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский, спасибо
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Vba.Excel Ошибка формулы условного форматирования
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]