Страницы: Пред. 1 2
RSS
Изменение размера шрифта в зависимости от значения в ячейке
 
Цитата
Jungl написал:
вы ставите точку останова, смотрите поведение макроса, потом жмете ресет?
нет, не делаю такого.
Просто заполняю данные через форму. Потом закрываю форму и ПРАВЛЮ в ячейках уже введенные данные, в частности столбец C.
Прописал на лист "Форма данных" запуск макроса auto_open при изменении листа, ошибка пропала.

Но теперь эта же ошибка возникает, когда я ввожу данные через форму, закрываю форму, переключаюсь между листами туда-обратно и опять пытаюсь ввести данные через форму. Сложно объяснить, это надо показывать =). Странно.
 
Цитата
Андрей Прокофьев написал:
Но теперь эта же ошибка возникает, когда я ввожу данные через форму, закрываю форму, переключаюсь между листами туда-обратно и опять пытаюсь ввести данные через форму
Исправил!
А всего лишь нужно было в код листа добавить:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Call auto_open
End Sub

Private Sub Worksheet_Activate()
Call auto_open
End Sub

Последняя проблемка! Если вручную исправить на листе "Форма данных" любое значение в столбце С на ноль, то макрос не срабатывает и шрифт не уменьшается =))
А также если заполнять данные на этом же листе не через форму, а просто вписывать в таблице....
P.S. Не работает только в том случае, если я редактирование ячейки заканчиваю кликом мышки в другую ячейку. Если по Enter - все работает.
Изменено: Андрей Прокофьев - 23.06.2016 12:48:02
 
Андрей Прокофьев, не знаю, у меня изначально все работало.
Плохая идея при каждом чихе перезаписывать массив))
Предлагаю создать отдельную тему на вопрос о возникновении ошибки/не изменяется размера шрифта, вам профи помогут.

Если говорить простыми словами на примере:
У вас в массиве а есть запись, что в ячейке D2 записано 1000
Вы меняете на первом листе 1000 на 0, далее срабатывает Worksheet_Change с вызовом auto_open
А это значит, что массив а перезаписался и там ячейка D2 теперь 0
Следом идет вычисление по формуле Worksheet_Calculate
Соответственно a РАВНО b
При проверке
Код
If a(i, n) <> b(i, n) Then
a не отличается от b и вас перекидывает на End if
Далее догадаетесь сами?)
Изменено: Jungl - 23.06.2016 13:34:24
 
Цитата
Jungl написал: Плохая идея при каждом чихе перезаписывать массив))
Лучше перебдеть, чем недобдеть =) ИМХО

Цитата
Не работает только в том случае, если я редактирование ячейки заканчиваю кликом мышки в другую ячейку. Если по Enter - все работает.
Решилось очень просто! Изменил код:
Код
Private Sub Worksheet_Calculate()
Call auto_open
End Sub
 
Private Sub Worksheet_Activate()
Call auto_open
End Sub
И добавил на лист простейшую формулу, которая при вводе любых данных пересчитывается =)
Теперь буду это все добавлять в основной файл и проверять быстродействие с моим количеством информации... Эх, больше 5000 строк в таблицах будет.


Крайне признателен Вам за помощь и новые знания!
 
Цитата
ж
Изменено: End Sub - 24.10.2016 21:28:45
 
Цитата
alexthegreat написал:
Вы можете только сделать жирный, пунктирный или подчеркнутый текст или цвет поменять.
а это можно задать формулой?
 
формат задается руками, а будет он применен или нет решается на основании результатов вычисления формулы
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Добрый день. Подскажите пожалуйста ЧАСТЬ кода который в зависимости от значения в контрольной ячейке C35 (0 или 1) при 1: в идеале включает перенос текста и размер шрифта Arial Narrow - 8
при 0 - автопобор ширины без переноса    и Arial Narrow - 12
Но возможно достаточно изменения размера.
Автописалкой не знаю как приписать к значению в ячейке и дофига мусора, спасибо
Скрытый текст
 
Вариант по размеру шрифта. Без макросов.
Возможно, если покопаться в структуре файла xlsx средствами не самого Excel, то можно менять и другие параметры УФ. Но это уже к спецам.
Страницы: Пред. 1 2
Наверх