У меня есть макрос - изменения масштаба автофигур. На листе находится пять кнопок - к которым прицеплены макросы изменения масштаба - 50%,75%,100%,125%,150%. Изменение масштаба - я делаю только щелкая по этим кнопкам, не трогая колесико мышки. Суть такая: при изменении масштаба листа - автофигуры эти также изменяют размеры (становятся больше - при увеличении масштаба, и становятся меньше при уменьшении масштаба). Также эти автофигуры визуально меняют свое положение при изменении масштаба.
В идеале - при изменении масштаба листа - размеры фигур - вообще визуально не должны меняться, только текст вписанный в них. Но сейчас при изменении масштаба - автофигуры все-равно меняются в размерах, а также немного меняют свое положение на листе.
Как это исправить? Как заставить автофигуры - визуально не менять свой размер при изменении масштаба ?
Добрый вечер, уважаемые форумчане.
У меня есть макрос - изменения масштаба автофигур. На листе находится пять кнопок - к которым прицеплены макросы изменения масштаба - 50%,75%,100%,125%,150%. Изменение масштаба - я делаю только щелкая по этим кнопкам, не трогая колесико мышки. Суть такая: при изменении масштаба листа - автофигуры эти также изменяют размеры (становятся больше - при увеличении масштаба, и становятся меньше при уменьшении масштаба). Также эти автофигуры визуально меняют свое положение при изменении масштаба.
В идеале - при изменении масштаба листа - размеры фигур - вообще визуально не должны меняться, только текст вписанный в них. Но сейчас при изменении масштаба - автофигуры все-равно меняются в размерах, а также немного меняют свое положение на листе.
Как это исправить? Как заставить автофигуры - визуально не менять свой размер при изменении масштаба ?cerber412
Вы так и не ответили, почему вы решаете задачу свою именно таким образом. Потому что подход выбран неверный. Кроме того, вы думаете,что если вам там не решили задачу - то дублирование вопроса поможет её быстрее решить?
У вас же, по сути, эти фигуры - не должны быть фигурами листа. Он у вас решают задачу управления интерфейсом - и, значит, должны быть элементами интерфейса. И проще всего сделать юзерформу (возможно, прозрачную), и нарисовать эти ваши кнопочки на ней. Юзерформы не привязаны к виду листа (они привязываются к окну) - соответственно, элементы формы, и сама форма - никогда у вас никуда не уедут и не отмасштабируются, что бы вы с листом не делали. Подумайте в этом направлении, а не изобретайте костыли.
Вы так и не ответили, почему вы решаете задачу свою именно таким образом. Потому что подход выбран неверный. Кроме того, вы думаете,что если вам там не решили задачу - то дублирование вопроса поможет её быстрее решить?
У вас же, по сути, эти фигуры - не должны быть фигурами листа. Он у вас решают задачу управления интерфейсом - и, значит, должны быть элементами интерфейса. И проще всего сделать юзерформу (возможно, прозрачную), и нарисовать эти ваши кнопочки на ней. Юзерформы не привязаны к виду листа (они привязываются к окну) - соответственно, элементы формы, и сама форма - никогда у вас никуда не уедут и не отмасштабируются, что бы вы с листом не делали. Подумайте в этом направлении, а не изобретайте костыли.AndreTM
Здравствуйте. А не странно ли получится, у вас монитор с максимальным разрешением экрана и фигуры маленькие. У меня маленькое разрешение и при открытии Вашего файла, фигура занимает половину экрана. При уменьшении масштаба страницы, лист уменьшается а фигуры остаются не измененными. Как быть? Не понятно для чего писать макрос, если это заложено в стандартных функциях Excel. Нажав на кнопку Масштаб, появляется панель с выбором кнопок нужного масштаба. По Вашей "хотелке", можно эти кнопки вынести на панель быстрого доступа, только это придется делать для каждого компа отдельно.
Здравствуйте. А не странно ли получится, у вас монитор с максимальным разрешением экрана и фигуры маленькие. У меня маленькое разрешение и при открытии Вашего файла, фигура занимает половину экрана. При уменьшении масштаба страницы, лист уменьшается а фигуры остаются не измененными. Как быть? Не понятно для чего писать макрос, если это заложено в стандартных функциях Excel. Нажав на кнопку Масштаб, появляется панель с выбором кнопок нужного масштаба. По Вашей "хотелке", можно эти кнопки вынести на панель быстрого доступа, только это придется делать для каждого компа отдельно.gling
Я спрашивал не про размещение кнопок на форме и не про размещение кнопок на панели быстрого доступа. Я спрашивал - почему при равных численных пропорциях - масштабов друг к другу и размеров автофигур и координат размещения этих автофигур - все равно размеры фигур и координаты их размещения - немного меняются ?
Почему так происходит? Неверно выбраны коэффициенты увеличения-уменьшения фигур и их координат ? Или что-то другое?
Я спрашивал не про размещение кнопок на форме и не про размещение кнопок на панели быстрого доступа. Я спрашивал - почему при равных численных пропорциях - масштабов друг к другу и размеров автофигур и координат размещения этих автофигур - все равно размеры фигур и координаты их размещения - немного меняются ?
Почему так происходит? Неверно выбраны коэффициенты увеличения-уменьшения фигур и их координат ? Или что-то другое?cerber412
почему при равных численных пропорциях ... все равно размеры фигур и координаты их размещения - немного меняются ?
Да потому, что вы пересчитываете размеры последовательно, относительно предыдущих = и накапливаются ошибки округления. А учитывая, что при отрисовке координаты вообще приводятся к целым числам - так ничего удивительного нет.
Решить данную проблему можно только одним способом - запоминать стартовые координаты и размеры-масштаб, и всегда пересчитывать положение от этих данных. При этом макросы-"масштаберы" должны запоминать всю последовательность изменений масштаба (либо, для расчета текущего коэффициента, - производить перемножение дробей, а не действительных чисел).
Сам посуди - если нажать 75%, затем 150% - то получится, что расчет вернет 0.75 * 1.5=1.125, снова нажмем туда-сюда - будет 1,265625, и очень быстро - точное число выйдет за пределы погрешности, и расчеты поплывут. В дробях это будет происходить медленнее - 3/4 * 3/2 = 9/8 * 9/8 = 81/64 и т.д., причем коэффициент всегда будет точен до пределов погрешности приложения (до 14 знака после запятой).
почему при равных численных пропорциях ... все равно размеры фигур и координаты их размещения - немного меняются ?
Да потому, что вы пересчитываете размеры последовательно, относительно предыдущих = и накапливаются ошибки округления. А учитывая, что при отрисовке координаты вообще приводятся к целым числам - так ничего удивительного нет.
Решить данную проблему можно только одним способом - запоминать стартовые координаты и размеры-масштаб, и всегда пересчитывать положение от этих данных. При этом макросы-"масштаберы" должны запоминать всю последовательность изменений масштаба (либо, для расчета текущего коэффициента, - производить перемножение дробей, а не действительных чисел).
Сам посуди - если нажать 75%, затем 150% - то получится, что расчет вернет 0.75 * 1.5=1.125, снова нажмем туда-сюда - будет 1,265625, и очень быстро - точное число выйдет за пределы погрешности, и расчеты поплывут. В дробях это будет происходить медленнее - 3/4 * 3/2 = 9/8 * 9/8 = 81/64 и т.д., причем коэффициент всегда будет точен до пределов погрешности приложения (до 14 знака после запятой).AndreTM