Get our FREE VBA eBook of the 30 most useful Excel VBA macros.
Automate Excel so that you can save time and stop doing the jobs a trained monkey could do.
Claim your free eBook
It is frustrating that Excel, PowerPoint and Word work natively using a measurement known as points. However, measurements within the standard application menus are set in centimeters or inches. This can be seen when setting the position and size of a shape in PowerPoint through the standard menus.
Yet, when using a macro to retrieve the position of that same shape, it displays the value in points.
Below is the PowerPoint VBA Code to show the dimensions of the active shape:
Sub getShapeSizes() Dim msgText As String msgText = "Top: " & ActiveWindow.Selection.ShapeRange.Top & vbNewLine msgText = msgText & "Left: " & ActiveWindow.Selection.ShapeRange.Left & vbNewLine msgText = msgText & "Height: " & ActiveWindow.Selection.ShapeRange.Height & vbNewLine msgText = msgText & "Width: " & ActiveWindow.Selection.ShapeRange.Width & vbNewLine MsgBox msgText End Sub
Whether the displayed measurements are in centimeters or inches is set through the Control Panel for PowerPoint. For Excel, the default is also set through the Control panel, but this can be changed to be non-default within the Excel options. File -> Options -> Advanced -> Display -> Ruler Units.
Converting from Inches or Centimeters to Points
Converting from inches or centimeters into points is reasonably straightforward, as there are 72 points to an inch or 28.35 points to a centimeter (rounded to 2 decimal places). Microsoft has provided two useful VBA function to make this conversion
Convert from Inches to Points
Dim valueInches As Double Dim valuePoints As Double valueInches = 25 valuePoints = Application.InchesToPoints(valueInches) Debug.Print valuePoints
Convert from Centimeters to Points
Dim valueCentimeters As Double Dim valuePoints As Double valueCentimeters = 25 valuePoints = Application.CentimetersToPoints(valueCentimeters) Debug.Print valuePoints
Convert from Points to Centimeters
Dim valuePoints As Double Dim valueCentimeters As Double valuePoints = 50 valueCentimeters = valuePoints / Application.CentimetersToPoints(1) Debug.Print valueCentimeters
Convert from Points to Inches
Dim valuePoints As Double Dim valueInches As Double valuePoints = 700 valueInches = valuePoints / Application.InchesToPoints(1) Debug.Print valueInches
Converting from Points to Pixels
What about Pixels? Whilst Pixels may seem to be an understandable unit of measure for the purposes of controlling positions of objects, it’s not as useful as you might expect.
The number of pixels will depend on a variety of factors, such as screen resolution used for each monitor. However, if you are desperate to convert points to pixels the following VBA code could be used.
Dim valuePoints As Long Dim valuePixels As Long valuePoints = 500 valuePixels = Application.ActiveWindow.PointsToScreenPixelsX(valuePoints) Debug.Print "X axis Pixels: " & valuePixels valuePixels = Application.ActiveWindow.PointsToScreenPixelsY(valuePoints) Debug.Print "Y axis Pixels: " & valuePixels
About the author
Hey, I’m Mark, and I run Excel Off The Grid.
My parents tell me that at the age of 7 I declared I was going to become a qualified accountant. I was either psychic or had no imagination, as that is exactly what happened. However, it wasn’t until I was 35 that my journey really began.
In 2015, I started a new job, for which I was regularly working after 10pm. As a result, I rarely saw my children during the week. So, I started searching for the secrets to automating Excel. I discovered that by building a small number of simple tools, I could combine them together in different ways to automate nearly all my regular tasks. This meant I could work less hours (and I got pay raises!). Today, I teach these techniques to other professionals in our training program so they too can spend less time at work (and more time with their children and doing the things they love).
Do you need help adapting this post to your needs?
I’m guessing the examples in this post don’t exactly match your situation. We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site), you should be able to adapt it to your needs.
But, if you’re still struggling you should:
- Read other blogs, or watch YouTube videos on the same topic. You will benefit much more by discovering your own solutions.
- Ask the ‘Excel Ninja’ in your office. It’s amazing what things other people know.
- Ask a question in a forum like Mr Excel, or the Microsoft Answers Community. Remember, the people on these forums are generally giving their time for free. So take care to craft your question, make sure it’s clear and concise. List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
- Use Excel Rescue, who are my consultancy partner. They help by providing solutions to smaller Excel problems.
What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid. Check out the latest posts:
This repository has been archived by the owner on Aug 31, 2018. It is now read-only.
Permalink
Cannot retrieve contributors at this time
title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date |
---|---|---|---|---|---|---|
Window.PointsToScreenPixelsX Method (Excel) |
vbaxl10.chm356129 |
vbaxl10.chm356129 |
excel |
Excel.Window.PointsToScreenPixelsX |
b637ae59-30fe-a5cd-2c0d-d9cb63c77d84 |
06/08/2017 |
Window.PointsToScreenPixelsX Method (Excel)
Converts a horizontal measurement from points (document coordinates) to screen pixels (screen coordinates). Returns the converted measurement as a Long value.
Syntax
expression . PointsToScreenPixelsX( Points )
expression A variable that represents a Window object.
Parameters
Name | Required/Optional | Data Type | Description |
---|---|---|---|
Points | Required | Long | The number of points horizontally along the top of the document window, starting from the left. |
Return Value
Long
Example
This example determines the height and width (in pixels) of the selected cells in the active window and returns the values in the lWinWidth
and lWinHeight
variables.
With ActiveWindow lWinWidth = _ .PointsToScreenPixelsX(.Selection.Width) lWinHeight = _ .PointsToScreenPixelsY(.Selection.Height) End With
See also
Concepts
Window Object
PointsToScreenPixelsY Method
Converts a vertical measurement from points (document coordinates) to screen pixels (screen coordinates). Returns the converted measurement as a Long value.
expression.PointsToScreenPixelsY(Points)
expression An expression that returns a Window object.
Points Required Long. The number of points vertically along the left edge of the document window, starting from the top.
Example
This example determines the height and width (in pixels) of the selected cells in the active window and returns the values in the lWinWidth
and lWinHeight
variables.
With ActiveWindow
lWinWidth = _
.PointsToScreenPixelsX(.Selection.Width)
lWinHeight = _
.PointsToScreenPixelsY(.Selection.Height)
End With
Содержание
- Global.PointsToCentimeters method (Word)
- Syntax
- Parameters
- Return value
- Example
- See also
- Support and feedback
- Метод Application.PointsToCentimeters (Word)
- Синтаксис
- Параметры
- Возвращаемое значение
- Пример
- См. также
- Поддержка и обратная связь
- Метод Global.PointsToCentimeters (Word)
- Синтаксис
- Параметры
- Возвращаемое значение
- Пример
- См. также
- Поддержка и обратная связь
- Application.PointsToCentimeters method (Word)
- Syntax
- Parameters
- Return value
- Example
- See also
- Support and feedback
- VBA: Convert centimeters, inches & pixels to points
- Converting from Inches or Centimeters to Points
- Convert from Inches to Points
- Convert from Centimeters to Points
- Convert from Points to Centimeters
- Convert from Points to Inches
- Converting from Points to Pixels
Global.PointsToCentimeters method (Word)
Converts a measurement from points to centimeters (1 centimeter = 28.35 points). Returns the converted measurement as a Single.
Syntax
expression. PointsToCentimeters ( _Points_ )
expression A variable that represents a ‘Global’ object. Optional.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Points | Required | Single | The measurement, in points. |
Return value
Example
This example converts a measurement of 30 points to the corresponding number of centimeters.
This example converts the value of the variable sngData (a measurement in points) to centimeters, inches, lines, millimeters, or picas, depending on the value of the variable intUnit (a value from 1 through 5 that indicates the resulting unit of measurement).
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
Метод Application.PointsToCentimeters (Word)
Преобразует измерение из точек в сантиметры (1 сантиметр = 28,35 точек). Возвращает преобразованное измерение в виде единицы.
Синтаксис
выражение. PointsToCentimeters ( _Points_ )
выражение: переменная, представляющая объект Application. Необязательный параметр.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Points | Обязательный | Single | Измерение в точках. |
Возвращаемое значение
Пример
В этом примере значение 30 точек преобразуется в соответствующее число сантиметров.
В этом примере значение переменной sngData (измерение в точках) преобразуется в сантиметры, дюймы, линии, миллиметры или пика в зависимости от значения переменной intUnit (значение от 1 до 5, указывающее результирующая единица измерения).
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Метод Global.PointsToCentimeters (Word)
Преобразует измерение из точек в сантиметры (1 сантиметр = 28,35 точек). Возвращает преобразованное измерение в виде единицы.
Синтаксис
выражение. PointsToCentimeters ( _Points_ )
Выражение Переменная, представляющая глобальный объект. Необязательный параметр.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Points | Обязательный | Single | Измерение в точках. |
Возвращаемое значение
Пример
В этом примере значение 30 точек преобразуется в соответствующее число сантиметров.
В этом примере значение переменной sngData (измерение в точках) преобразуется в сантиметры, дюймы, линии, миллиметры или пика в зависимости от значения переменной intUnit (значение от 1 до 5, указывающее результирующая единица измерения).
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Application.PointsToCentimeters method (Word)
Converts a measurement from points to centimeters (1 centimeter = 28.35 points). Returns the converted measurement as a Single.
Syntax
expression. PointsToCentimeters ( _Points_ )
expression A variable that represents an Application object. Optional.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Points | Required | Single | The measurement, in points. |
Return value
Example
This example converts a measurement of 30 points to the corresponding number of centimeters.
This example converts the value of the variable sngData (a measurement in points) to centimeters, inches, lines, millimeters, or picas, depending on the value of the variable intUnit (a value from 1 through 5 that indicates the resulting unit of measurement).
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
VBA: Convert centimeters, inches & pixels to points
It is frustrating that Excel, PowerPoint and Word work natively using a measurement known as points. However, measurements within the standard application menus are set in centimeters or inches. This can be seen when setting the position and size of a shape in PowerPoint through the standard menus.
Measurements in standard menus are in Centimeters
Yet, when using a macro to retrieve the position of that same shape, it displays the value in points.
Measurements for VBA are in Points
Below is the PowerPoint VBA Code to show the dimensions of the active shape:
Whether the displayed measurements are in centimeters or inches is set through the Control Panel for PowerPoint. For Excel, the default is also set through the Control panel, but this can be changed to be non-default within the Excel options. File -> Options -> Advanced -> Display -> Ruler Units.
Converting from Inches or Centimeters to Points
Converting from inches or centimeters into points is reasonably straightforward, as there are 72 points to an inch or 28.35 points to a centimeter (rounded to 2 decimal places). Microsoft has provided two useful VBA function to make this conversion
Convert from Inches to Points
Convert from Centimeters to Points
Convert from Points to Centimeters
Convert from Points to Inches
Converting from Points to Pixels
What about Pixels? Whilst Pixels may seem to be an understandable unit of measure for the purposes of controlling positions of objects, it’s not as useful as you might expect.
The number of pixels will depend on a variety of factors, such as screen resolution used for each monitor. However, if you are desperate to convert points to pixels the following VBA code could be used.
About the author
Hey, I’m Mark, and I run Excel Off The Grid.
My parents tell me that at the age of 7 I declared I was going to become a qualified accountant. I was either psychic or had no imagination, as that is exactly what happened. However, it wasn’t until I was 35 that my journey really began.
In 2015, I started a new job, for which I was regularly working after 10pm. As a result, I rarely saw my children during the week. So, I started searching for the secrets to automating Excel. I discovered that by building a small number of simple tools, I could combine them together in different ways to automate nearly all my regular tasks. This meant I could work less hours (and I got pay raises!). Today, I teach these techniques to other professionals in our training program so they too can spend less time at work (and more time with their children and doing the things they love).
Do you need help adapting this post to your needs?
I’m guessing the examples in this post don’t exactly match your situation. We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site), you should be able to adapt it to your needs.
But, if you’re still struggling you should:
- Read other blogs, or watch YouTube videos on the same topic. You will benefit much more by discovering your own solutions.
- Ask the ‘Excel Ninja’ in your office. It’s amazing what things other people know.
- Ask a question in a forum like Mr Excel, or the Microsoft Answers Community. Remember, the people on these forums are generally giving their time for free. So take care to craft your question, make sure it’s clear and concise. List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
- Use Excel Rescue, who are my consultancy partner. They help by providing solutions to smaller Excel problems.
What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid. Check out the latest posts:
Источник
ща смотрю свою функцию по определению координат указанной ячейки в Excel. Оказалось что она все пиксели правильно подсчитывала, а проблема была не с ней, а UserForm.Top
Смешно, если б не было так грустно, специально сейчас проверил, на своем мониторе при разрешении 640*800 верхний край UserForm исчезает уже при значении Top=448(таскбар убран)…
Теперь пытаюсь понять, в каких же единицах задается этот самый UserForm.Top???
Может кто-нибудь в курсе этого прикола, а главное, как у Вас там с этим свойством?
21 ответ
258
17 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by SergeySV
640*800
Конечно же — 600*800 (640 это я о чем то другом думал)
Но вопрос остается, кто-нибудь в курсе в каких координатах задается положение UserForm в Excel…?
258
17 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by SergeySV
Но вопрос остается, кто-нибудь в курсе в каких координатах задается положение UserForm в Excel…?
???
267
17 декабря 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by SergeySV
???
У меня при 1024х768 правый нижний угол экрана получается при 767х575.
Эта хрень, очевидно, меряется в микрософтах. 1000 микрософтов = 1 миллисофт, 1000 миллисофтов = 1 софт. Эталонный экземпляр 1 софта хранится в Парижской Палате Мер и Софтов. В пиксели переводится по формуле 4 пикселя = 3 микрософта.
Интересна историческая подоплека появления такой единицы. Когда выбирался размер пикселя, ответственный за это Уильям Ворота (Сиэтл, США), выбрал пиксель равным 1/1024 ширины своей задницы. Когда дело дошло до выбора единицы измерений для свойств .Top и .Left у формы в Экселе, Уильям вспомнил о той своей концепции, и принял за единицу 1/1024 ширины своего зада. Однако он забыл учесть, что ввиду большого коммерческого успеха предыдущих продуктов его фирмы задница Уильяма стала шире на 33.3%. Так получилась новая единица измерения — микрософт.
258
17 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Одназначно, это один из лучших ответов :angel:
258
17 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Ну ладно, ничего с этим не поделаешь, теперь вооруженный этими знаниями подкорректирую свою функцию, чтобы она выдавала координаты в пикселях и в микрософтах на выбор пользователя и выложу в Исходниках.
P.S. Cutty Sark, а ты мою просьбу не пропустил на счет исправления Си/С++ на VBA…. а то не хочется пугать народ
258
17 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Cutty Sark: ты будешь смеяться, но оказывается высота строк задается в тех же микрософтах — 12,75 микрософтов = 17 пикселям, т.е. тот же 1,33 коэфф.
я тут даже подумал, может они в миллиметрах, решили задавать, но опять не дотягивает, там от силы 5 милл.
258
17 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Нашел наконец эту загадачную микрософсткую величину, пойнтом ее кличат:
point: Unit of measure referring to the height of a printed character. A point equals 1/72 of an inch, or approximately 1/28 of a centimeter.)
о как, интересно токо какой дюйм они имеют ввиду, логический, физический или еще какой
265
17 декабря 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by SergeySV
Нашел наконец эту загадачную микрософсткую величину, пойнтом ее кличат:
point: Unit of measure referring to the height of a printed character. A point equals 1/72 of an inch, or approximately 1/28 of a centimeter.)
о как, интересно токо какой дюйм они имеют ввиду, логический, физический или еще какой
point-это точка, а дюйм это приблизительно 2,25 сантиметра
258
18 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Gauss
point-это точка, а дюйм это приблизительно 2,25 сантиметра
2,24 если быть точным, но это нормальный дюйм, физический, а главное, меня это не греет, мне то нужно в пикселях. Через API я могу получить кол-во пикселей в логическом дюйме, но он не приблизительно в 1,5 раз больше физического дюйма, т.е. точно не известно во скоко раз больше лог. дюйм реального (наверное потому что это никому не надо). Поэтому если они имели ввиду физический дюйм, тогда надо перевести скоко это составит в лог. дюймах, потом узнать скоко пикселей в лог. дюйме, а потом уже расчитать скоко пикселей уместилось…. если половина данных из необходимых известна как — приблизительно, то проще наверное просто найти конечный коэффицент и его использовать, тем более, что судя по всему, разницы между разрешениями 800*600 и 1024*768 нету, а на счет других можно и положить…
258
18 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
О, нашел кажись:
1 point == 1 pixel/72 * dpi,
dpi — это то что в свойствах экрана называется кол-во точек в дюйме, обычно равняется 96 (на больших мониторах это значение больше),
так что произведя эти вычисления мы как раз и получим свои 1,333
267
18 декабря 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by SergeySV
О, нашел кажись:
1 point == 1 pixel/72 * dpi,
dpi — это то что в свойствах экрана называется кол-во точек в дюйме, обычно равняется 96 (на больших мониторах это значение больше),
так что произведя эти вычисления мы как раз и получим свои 1,333
Парни, дюйм 2.54см, а не 2.24.(см. сюда)
Ну да ладно… А я вчера подумал про эти точки, в Корел Дро есть переключатель единицы измерения — пиксель-точка. Готов понять, когда эти точки применяются для того, что на печать вылезает. Но зачем формы к ним привязывать? Загадка природы…
258
18 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Cutty Sark
Парни, дюйм 2.54см, а не 2.24.(см. сюда)
Ну да ладно… А я вчера подумал про эти точки, в Корел Дро есть переключатель единицы измерения — пиксель-точка. Готов понять, когда эти точки применяются для того, что на печать вылезает. Но зачем формы к ним привязывать? Загадка природы…
Каюсь, запамятовал, конечно 2,54
На счет выбора единици измерений, points это еще не конец спектакля — в том же Access разработчикам очень полюбились твипы (Твип — это 1/1440 дюйма)
Вообщем, больше единиц измерений, хороших и разных, даешь….. наверное такой плакат висит в комнате у программистов майкрософта
Ну ладно, с этим более менее понятно, но борьба продолжается, вопрос: А в чем измеряют ШИРИНУ столбцов Excel??? это что, те же points, а почему величины другие, там что dpi по гориз. и верт. разные что-ли
267
18 декабря 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by SergeySV
Ну ладно, с этим более менее понятно, но борьба продолжается, вопрос: А в чем измеряют ШИРИНУ столбцов Excel??? это что, те же points, а почему величины другие, там что dpi по гориз. и верт. разные что-ли
Про ширину я знаю — это среднее количество символов типа 0-9 (например, восьмёрок), помещающееся в ячейке. Шрифт берётся тот, который в меню Сервис/Параметры… вкладка «Общие».
Неужели, Серёж, ты сам не догадался? Это же так естественно…
258
18 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Cutty Sark
Про ширину я знаю — это среднее количество символов типа 0-9 (например, восьмёрок), помещающееся в ячейке. Шрифт берётся тот, который в меню Сервис/Параметры… вкладка «Общие».
Неужели, Серёж, ты сам не догадался? Это же так естественно…
Да читал когда-то краем глаза, но уже очень не хотелось верить, что такой геморой с переводом в пиксели будет, это ведь тогда надо брать шрифт, определять его параметры, потом вычислять…. йо хо хо и бутылка рома
265
18 декабря 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by Cutty Sark
Парни, дюйм 2.54см, а не 2.24.(см. сюда)
Я окончательно уехала! Твоя крыша.
258
22 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Наконец-то домучил вычисление ширины и высоты столбцов и строк в Excel.
Полученный модуль — mdlSysMetrics.zip, выложил в Исходниках->Офисные приложения.
В нем реализованы следующие осн. функции:
1. WidthExcColToPixel — переводит ширину столб. Excel в пиксели.
1. PointToPixel — перевод points в пиксели.(испол. для получения высоты строки Excel в пикселях)
2. PixelToPoint — перевод пикселей в points.
3. MetricsFont — возвращает хар-ки указанного шрифта: ср. ширину символа, макс. ширину символа, высоту символа, величину межстрочного интервала.
P.S. Cutty Sark: я думал это у меня Opera глючит, а оказалось что и через IE такая же фигня, добавляешь файл в Исходники указывая язык VBA, а получается С/С++. Не, я понимаю, что язык Си крутой, но что до такой степени… , наверное прям на ходу все конвертируется в него
Обратишь там внимание кого следует…, ок!?
459
23 декабря 2003 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by SergeySV
Наконец-то домучил вычисление ширины и высоты столбцов и строк в Excel.
Полученный модуль — mdlSysMetrics.zip, выложил в Исходниках->Офисные приложения.
В нем реализованы следующие осн. функции:
1. WidthExcColToPixel — переводит ширину столб. Excel в пиксели.
1. PointToPixel — перевод points в пиксели.(испол. для получения высоты строки Excel в пикселях)
2. PixelToPoint — перевод пикселей в points.
3. MetricsFont — возвращает хар-ки указанного шрифта: ср. ширину символа, макс. ширину символа, высоту символа, величину межстрочного интервала.
Возможно я не правильно понял твои проблемы, но!
В принципе в ВБА Экселя есть куча функций PointTo… и обратно, например PointsToScreenPixelsX и PointsToScreenPixelsY
А поинты пошли из ВизиВиг (что вижу, то и печатаю)
В них, в частности, задаются размеры шрифтов.
258
23 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by gacol
Возможно я не правильно понял твои проблемы, но!
В принципе в ВБА Экселя есть куча функций PointTo… и обратно, например PointsToScreenPixelsX и PointsToScreenPixelsY
А поинты пошли из ВизиВиг (что вижу, то и печатаю)
В них, в частности, задаются размеры шрифтов.
Ну главная проблема была по переводы ширины столбца Excel, которая опр. в кол-ве символов, кроме того определения ширины символов шрифта удобно и для других целей (для опр. длины строки есть конечно другая API функция более удобная, чем ср. ширина символов…, может я допишу ее к этому модулю)
А на счет PointsToScreenPixelsX, это конечно замечательно, но чтото я с ними не разобрался, то ли они другие Points имеют в виду, но у меня то была задача перевести высоту строк Excel (именно их Points), а PointsToScreenPixelsX(Y) возвращают какие-то другие значения, например: высота в Excel строки = 13.5 это соотв. 18 пикселям, а PointsToScreenPixelsY возвращает 145, так что не ничего не понял и написал свои функции
258
23 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
То что я написал не является конечно истиной в последней инстанции, так что если у кого-то есть какие-то замечания, пожелания к функциям — высказывайтесь,… вместе мы исправим все неточности и ошибки и надеюсь дойдем до истины.
P.S. дописал для этого модуля функцию по определению длины/высоты заданной строки опр. шрифта, после всестороннего обсуждения можно будет ее добавить в итоговый модуль
258
23 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Продолжая разбираться с этими ширинами и высотами допетрил наконец до замысла программистов microsoft на счет ширины столбца:
у объекта Range есть такие свойства:
.Height и RowHeight и оба они возвращают одинаковую высоту в points,…. дойдя до них, я автоматом подумал что с .Width и .ColumnWidth такая же фигня, и стал писать для них отдельную функцию
Однако с шириной все немного хитрее: .Width возвращает ширину в их дурацких кол-вах символов шрифта по умолч. умещающихся в ячейке, а вот .ColumnWidth возвращает эту же ширину но уже в их любимых points…. так что в принципе без WidthExcColToPixel и MetricsFont можно и обойтись (хотя все равно прикольно)
258
23 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by SergeySV
Продолжая разбираться с этими ширинами и высотами допетрил наконец до замысла программистов microsoft на счет ширины столбца:
у объекта Range есть такие свойства:
.Height и RowHeight и оба они возвращают одинаковую высоту в points,…. дойдя до них, я автоматом подумал что с .Width и .ColumnWidth такая же фигня, и стал писать для них отдельную функцию
Однако с шириной все немного хитрее: .Width возвращает ширину в их дурацких кол-вах символов шрифта по умолч. умещающихся в ячейке, а вот .ColumnWidth возвращает эту же ширину но уже в их любимых points…. так что в принципе без WidthExcColToPixel и MetricsFont можно и обойтись (хотя все равно прикольно)
Блин, перлепутал, наоборот: .Width — в points, а .ColumnWidth в кол-ве символов