Как в Excel сделать столбец шириной 5 см? Т.е. как перевести его "пункты" в см?
Как в Excel сделать столбец шириной 5 см? Т.е. как перевести его "пункты" в см?
Никак. Если только самостоятельно путём проб и пропорций определить это соотношение для каждого конкрентного монитора/принтера/масшабирования/набора_шрифтов
Всех благ!!!
Чувелёв Андрей
ps: Всё вышеизложенное является моим частным мнением и не может претендовать на полноту изложения.
Я думаю, что если на VBA задать столбцу ширину 5 см, то на принтере это точно будет 5 см.
ADSemenov.ru, я что-то не нашёл в свойстве WIDTH такой возможности...
Всех благ!!!
Чувелёв Андрей
ps: Всё вышеизложенное является моим частным мнением и не может претендовать на полноту изложения.
Не проверяя, я рассуждал так. –
Свойство Columns(1).Width содержит ширину в point'ах.
Свойство Columns(1).ColumnWidth содержит ширину в "ширинах" символа "0".
Метод Application.CentimetersToPoints(3.5) переводит сантиметры в point'ы.
Отсюда простой пересчёт:
И первый столбец должен получить ширину 3.5 см. Однако, когда я проверил, то ни на экране, ни на принтере соответствия не было. На моём принтере было 3.8 см. И ещё какая-то загадка – при применении второй раз к столбцу этих действий он ещё немножко расширяется. Я считал, что в Excel можно всё. Но здесь пока не вижу выхода. Возможно, перед применением этих действий, надо "потрогать" какие-нибудь шрифтовые свойства столбца...Код:With ActiveSheet.Columns(1) .ColumnWidth = Application.CentimetersToPoints(3.5) * .ColumnWidth / .Width End With
В конце концов я нарисовала в Excel линию 5 см, под нее подогнала столбец.
На принтере оказалось, что это уже не 5 см , а на 2 мм больше и со втрого раза путем подгонки получилось - каменный век!
Нет, господа, век тут не причем. Просто Excel не предназначен для таких действий... Это не система подготовки публикаций. Может даже искуственно внесены ограничения.
Всех благ!!!
Чувелёв Андрей
ps: Всё вышеизложенное является моим частным мнением и не может претендовать на полноту изложения.
Ох.. я тоже намудохался с этим. Наткнулся на этот форум по этой проблеме. Да... Это действительно зависит от экрана и принтера. Могу сказать, что высота везде будет одинакова, то есть 1 см = 28,344646 пунктов(поинтов). А вот, для того, чтобы выйти из положения для ширины, я предлагаю следующее решение:
Sub SetColumnWidthMM(ColNo As Long, mmWidth As Integer)
Dim w As Single
If ColNo 255 Then Exit Sub
Application.ScreenUpdating = False
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
While Columns(ColNo + 1).Left - Columns(ColNo).Left + 0.1 < w
Columns(ColNo).ColumnWidth = Columns(ColNo).ColumnWidth + 0.1
Wend
End Sub
Работает :о)
А для того, чтобы получить размер ширины колонки в см. можно воспользоваться следующим:
Function GetColumnWidth(ColNo As Byte)
GetColumnWidth = (Columns(ColNo + 1).Left - Columns(ColNo).Left) / 28.34464646
End Function
Всем удачного равнения! :с)
--------
Макс Фактор
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)