Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Подбор ширины и высоты ячейки в сантиметрах, макрос для изменения параметров ячейки исходя из заданных условий
 
Всем доброго дня. Я знаю точные размеры ячеек в сантиметрах и необходимо реализовать макрос, который мог бы пересчитать значения в пикселях в сантиметры и изменить высоту и ширину ячейки. Прилагаю файл. В нем серыми полями закрашены ячейки, в которых выставлены значения в сантиметрах. я не знаю отношения пикселя к сантиметру. Очень прошу помощи. не смог найти ничего подобного на форуме.
 
https://stackoverrun.com/ru/q/10529322
 
Такой ответ Вам подойдет?
https://www.calc.ru/piksel-v-santimetr.html
 
IKor
Это не макрос, а калькулятор.
Если таблиц много, то каждую так не пересчитаешь
 
Цитата
Ivan.kh написал:
https://stackoverrun.com/ru/q/10529322
Я не смогу переработать код этого макроса...
 
Что Вы не сможете, воспользоватся функцией, которая там приведена (ConvertPointToCm)?
Изменено: Ivan.kh - 16 Май 2019 14:52:34
 
Дмитрий, попробуйте интегрировать в свой документ эту информацию:
Код
1 Пиксель равно 0.02636 сантиметров
1 сантиметр равно 37.936267 Пикселей
 
ОК
А дальше как?)
Хотелось что бы оно само считалось, имея значение в сантиметрах в сером поле
 
Цитата
Ivan.kh написал:
Что Вы не сможете, воспользоватся функцией, которая там приведена (ConvertPointToCm)?
Вообще не понял ваш совет...
 
Даже приведенное относится к настройкам стандартным в 96dpi и которые могут быть изменены, что приведет к некорректности расчетов.
 
Dmitrii, значит не удосужились почитать по ссылке.
 
Ivan.kh, не горячитесь.
для примера тс если взять 96dpi (а не 72) то ширина в 4 см 6го столбца должна быть равна  4*96/2,54=151,18 и если это использовать при Page Layout view, то по линейке это 4 см и будет, но если переключится в нормальный режим то 151 превратится 141 . Ширина (width) 105,75 а ширина столбца (ColumnWidth) 19,43 и установить его можно только через  ColumnWidth. а его надо тоже рассчитать, а он не линейный судя по тому что я вижу :-(
на просторах нашел безумный код
Код
    w = Application.CentimetersToPoints(mmWidth / 10)
    While Columns(ColNo + 1).Left - Columns(ColNo).Left - 0.1 > w
        Columns(ColNo).ColumnWidth = Columns(ColNo).ColumnWidth - 0.1
    Wend

очень странно, что нет прямого варианта.
Изменено: БМВ - 16 Май 2019 16:56:33
 
Цитата
БМВ написал:
нашел безумный код
Здравствуйте, Михаил! Может быть, такой код вызван желанием учесть влияние возможных границ ячеек.
Владимир
 
sokol92, Приветствую. Владимир, нет.  думаю именно такой вызван незнанием что есть еще свойство Width :-)
1. Excel measures column width units based on the size (width) of the font you use in the Normal style
в переводе Excel измеряет ширину столбца базируюсь ширине шрифта нормального стиля.
2. Выяснилось, что Application.CentimetersToPoints работает но этому значению соответвует Columns.Width только в режиме ActiveWindow.View = xlPageLayoutView
3. Реализовал было код с итерационным приближением для быстрого подбора но не сохранил, но принцип такой:

1. меняем ActiveWindow.View = xlPageLayoutView
2. Определеяем Application.CentimetersToPoints для нужной ширины в см
3. далее в цикле While сравниваем ABS(Columns.Width -  Application.CentimetersToPoints( … )) > xxx погрешность
4. Меняем Columns.ColumnWidt н дельту с плюсом или минусом в зависимости от того куда нужно
5. корректируем дельту (уменьшаем)
6. повторяем
7.Возвращаем ActiveWindow.View = xlNormalView

Но как-то сложно.
Изменено: БМВ - 16 Май 2019 21:31:37
 
В общем и целом решения нет....
 
Ну попробуйте,
Страницы: 1
Читают тему (гостей: 2)
Наверх