Добрый день, форумчане! Проблема следующая: при изменении масштаба в винде со 100% на какое-либо другое, координаты считаются неверно(по всей видимости есть какая-то формула для перерасчета). Покажу на коротеньком примере:
a = ActiveSheet.Cells(currentRow + qntCurrency - 1, 1).Top b = ActiveSheet.Cells(currentRow + qntCurrency - 1, 1).Height с = Application.CentimetersToPoints(paperHeight) _ - ActiveSheet.PageSetup.BottomMargin _ - ActiveSheet.PageSetup.Top
Для 100 %:
a = 281.25
b = 28.5
c = 566.9291
Для 125%:
a = 284.4
b = 28.2
c = 566.9291
Как видите при использовании команды TOP или HEIGHT мы получаем разные значение, причем для команды TOP значение a при 100% меньше чем при 125%, а для команды HEIGHT наоборот: значение b при 100% больше чем при 125%. При всем при этом координата с рассчитывается одинаково при любом масштабе. Собственно в этом и проблема. Здесь либо TOP и HEIGHT надо на что-то домножать, либо изменять формулу для расчета с или тоже на что-то домножать. Не подскажите как согласовать эти расчеты. Может быть есть какая либо пропорция? Я не смогла подобрать такого коэффициента. Заранее большое спасибо
Assa_13, а что вы хотите получить то? Для чего все эти цифры? Лучше с файлом примером, чтобы не гадать дальше, что это за переменные, которые безусловно влияют на данные: currentRow, qntCurrency, paperHeight
StepanWolkoff, попробую объяснить на коротком примере (см. Вложение). У меня есть некий документ. Документ условно разделен на 4 части:
заголовок документа (строки 1-2)
заголовок таблицы (строка 3)
содержимое таблицы (строки 4-22)
подвал документа (строки 23-24)
Мне необходимо анализировать вмещается ли все содержимое табличной части вместе с подвалом на одном печатном листе, и если не вмещается, то ставить бряк после строки которая поместилась, и далее скопировать заголовок после бряка. Таким образом, у меня на первом листе получается заголовок документа + заголовок таблицы + содержимое таблицы без последней строки, а на втором листе: скопированный заголовок таблицы + последняя строка + подвал документа. Так вот в чем проблема: Допустим я анализирую 19-ю строку таблицы и она не помещается вместе с подвалом на одном печатном листе. Мне надо после 18 строки вставить бряк и скопировать после него заголовок. Таким образом на втором печатном листе у меня будет заголовок таблицы + последняя строка таблицы + подвал. Для 100 % все работает корректно. А например для 125% бывает так, что currentCoordinate например не для 19, а уже для 18 строки становится больше (из-за неправильного расчета) чем currentSheetEnd, хотя на самом деле 18-я строка все ещё помещается на печатном листе, не помещается только 19-я. То есть на первом листе получается меньше строк, чем на самом деле влезает.
The_Prist, ActiveWindow.Zoom меняет масштаб в самом Excel, а я говорю про изменение масштаба в винде: Разрешение экрана -> Изменение размера текста и других элементов
The_Prist, а где я учитываю видимую область? У меня расчеты ведутся относительно PageBreaks. То есть координата конца каждой следующей страницы - это PageBreak + высота листа