Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

XL: Единицы измерения в Excel

258
16 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
ща смотрю свою функцию по определению координат указанной ячейки в Excel. Оказалось что она все пиксели правильно подсчитывала, а проблема была не с ней, а UserForm.Top
Смешно, если б не было так грустно, специально сейчас проверил, на своем мониторе при разрешении 640*800 верхний край UserForm исчезает уже при значении Top=448(таскбар убран)...

Теперь пытаюсь понять, в каких же единицах задается этот самый UserForm.Top???
Может кто-нибудь в курсе этого прикола, а главное, как у Вас там с этим свойством?
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
Одназначно, это один из лучших ответов :) :D :D :angel:
258
17 декабря 2003 года
SergeySV
1.5K / / 19.03.2003
Ну ладно, ничего с этим не поделаешь, теперь вооруженный этими знаниями подкорректирую свою функцию, чтобы она выдавала координаты в пикселях и в микрософтах на выбор пользователя и выложу в Исходниках.

P.S. Cutty Sark, а ты мою просьбу не пропустил на счет исправления Си/С++ на VBA.... а то не хочется пугать народ :roll:
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 в кол-ве символов

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог