Просто меня заинтересовала тема "№ страницы ячейки (Excel)" совсем недавно обсуждавшаяся. Теоретически эту проблему можно было бы побороть, но опять траблы......
Для начала можно было бы определить границы полей и колонтитулов листа (свойства LeftMargin, RightMargin и т.д. ...выводят значения в поинтах (1поинт=0,353мм)), поэтому переводим в мм:
- Код: Выделить всё
'границы полей
LeftM = Round(ActiveSheet.PageSetup.LeftMargin * 0.353 / 10, 2)
RightM = Round(ActiveSheet.PageSetup.RightMargin * 0.353 / 10, 2)
TopM = Round(ActiveSheet.PageSetup.TopMargin * 0.353 / 10, 2)
DownM = Round(ActiveSheet.PageSetup.BottomMargin * 0.353 / 10, 2)
'границы колонтитулов (верхнего и нижнего)
TopKol = Round(ActiveSheet.PageSetup.HeaderMargin * 0.353 / 10, 2)
DownKol = Round(ActiveSheet.PageSetup.FooterMargin * 0.353 / 10, 2)
А потом определить совокупную высоту строк и столбцов. Размер бумаги А4=210x297. Вот и посчитать на какой станице находится ячейка, отняв от 297мм (допустим по вертикали) высоту нижних, верхних границ полей и колонтитулов (так же и по горизонтали), таким образом вычислив печатаемую область страницы. Ну а потом сравнивать с местоположением данной ячейки.
Но из-за того, что высоту строк и ширину столбцов мне не получается вычислить в мм, вот в этом вся и проблема. Хотя строки, я так понял, в поинтах измеряются, то вроде в мм переводится, но если все вычесть от 297мм, то не сходится. Столкнулся с другой проблемой - границы полей оказывается, что "плавают", знать бы точно в каких пределах?
Если у кого есть желание, поэкспериментируйте, было бы хорошо побороть эту проблему