Страницы: 1
RSS
Замена макросом значений в ячейках при открытии книги
 
Только начинаю разбираться с макросами для решения одной задачки, поэтому не ругайтесь.

Есть программа, CRM, построенная на базах данных Access, из таблиц программы есть возможность выгрузки данных по шаблону, в одной из таблиц базы, есть поля хранящие значения "ДА" или "НЕТ", предположим что запись в таблице может быть или товаром, или услугой или товаром и услугой одновременно, тогда чекбоксы в полях "Товар" "Услуга" принимают значения в зависимости от проверки записи триггером. Это вводная часть, теперь к сути

В шаблоне используются закладки - обращения к полям таблиц базы данных, и вот при формировании по шаблону счет.xlsx получаем табличку с неким перечнем товаров и/или услуг рядом с которыми указывается товар эта позиция, или услуга, или и то и другое, но указывается оно в виде "Да" и "Нет", макросом хочу при открытии файла проверить диапазон ячеек в которые выгружаются эти самые "Да" или "Нет" и заменить их на более понятные "V" и "Х".

Поскольку познания мои в области VBA скудны, с помощью гугла и форумов сделал такое:
Код
Private Sub Workbook_Open()
Dim cell As Range
For Each cell In Range("L10:L30").Cells
If cell.Value = "НЕТ" Then
cell.Value = ""
ElseIf cell.Value = "ДА" Then
cell.Value = "V"
End If
Next
For Each cell In Range("M10:M30").Cells
If cell.Value = "НЕТ" Then
cell.Value = ""
ElseIf cell.Value = "ДА" Then
cell.Value = "V"
End If
Next
End Sub

Закономерно - оно не работает. Подскажите, как добиться работоспособности.
 
Ничуть не закономерно. У меня например работает.
 
Код
For Each cell In Range("L10:L30").Cells
For Each cell In Range("M10:M30").Cells

В этих строках кода идет обращение к диапазонам какого листа? Я думаю, было бы неплохо явно указать, например:
Код
For Each cell In Worksheets("First").Range("L10:L30").Cells
Изменено: Пытливый - 26.07.2019 14:29:50
Кому решение нужно - тот пример и рисует.
 
Вот файл, созданный по шаблону из программы.
Макрос переделал к виду For Each cell In Worksheets("КП-1").Range... Результату нуль...
 
У вас в ячейках "Нет" в макросе ищете "НЕТ". Либо прежде чем сравнивать, приводить к единому виду (например, через функцию VBA UCase(String)), либо корректно указывать значения для сравнения.
Кому решение нужно - тот пример и рисует.
 
Огромное спасибо!
Всё отлично  
Страницы: 1
Наверх