95 / 91 / 16 Регистрация: 13.04.2015 Сообщений: 545 |
|
1 |
|
20.04.2017, 18:37. Показов 5019. Ответов 10
Всем привет! Помогите. пожалуйста. Есть ли способ определить координаты ячейки Excel? Абсолютные относительно монитора.
0 |
ovva 4273 / 3414 / 825 Регистрация: 02.02.2013 Сообщений: 3,304 Записей в блоге: 2 |
||||
21.04.2017, 00:27 |
2 |
|||
Речь, вероятно, идет о VBA. Попробуйте так
0 |
Aleks777 95 / 91 / 16 Регистрация: 13.04.2015 Сообщений: 545 |
||||
21.04.2017, 09:16 [ТС] |
3 |
|||
ovva, нет, нет речь идет именно о VB.net в VS2015 пишу. Добавлено через 6 минут
0 |
SoftIce es geht mir gut 11264 / 4746 / 1183 Регистрация: 27.07.2011 Сообщений: 11,437 |
||||
21.04.2017, 09:25 |
4 |
|||
А так?
0 |
95 / 91 / 16 Регистрация: 13.04.2015 Сообщений: 545 |
|
21.04.2017, 09:27 [ТС] |
5 |
SoftIce, забыл написать, с типами игрался тоже. При Integer ошибка та же.
0 |
es geht mir gut 11264 / 4746 / 1183 Регистрация: 27.07.2011 Сообщений: 11,437 |
|
21.04.2017, 09:33 |
6 |
При Integer ошибка та же А это — ByRef lpRect As RECT ?
1 |
95 / 91 / 16 Регистрация: 13.04.2015 Сообщений: 545 |
|
21.04.2017, 09:34 [ТС] |
7 |
SoftIce, прошу прощения, сразу не заметил.
0 |
es geht mir gut 11264 / 4746 / 1183 Регистрация: 27.07.2011 Сообщений: 11,437 |
|
21.04.2017, 09:34 |
8 |
что вообще должно заходить в GetClientRect? Да ничего не должно заходить, передаете пустую структуру по ссылке в GetClientRect.
0 |
95 / 91 / 16 Регистрация: 13.04.2015 Сообщений: 545 |
|
21.04.2017, 09:35 [ТС] |
9 |
SoftIce, сейчас в Paint’е проверю как отрабатывает))
0 |
95 / 91 / 16 Регистрация: 13.04.2015 Сообщений: 545 |
|
21.04.2017, 09:44 [ТС] |
10 |
SoftIce, либо оно криво отрабатывает, либо я не понимаю что есть ClientRect. Правильно понимаю (на картинке)? Миниатюры
0 |
es geht mir gut 11264 / 4746 / 1183 Регистрация: 27.07.2011 Сообщений: 11,437 |
|
21.04.2017, 09:57 |
11 |
Мне кажется, ABCDEF…. и 123456… туда тоже должны входить. А что не так?
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
21.04.2017, 09:57 |
Помогаю со студенческими работами здесь Вывести координаты курсора относительно экрана Получить координаты мышки относительно формы, но не экрана Почему в Opera v12.0 координаты окна браузера относительно экрана window.screenX или window.screenY выдает 0? Вывести поточные координаты курсора мыши относительно формы и экрана, при нажатии на кнопку-реверсное изменение кнопок мыши C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 11 |
Хочу получить координаты ячейки экселя на экране компьютера, написал маркос:
[SRC vba]Sub Position()
Dim t As Integer
Dim l As Integer
t = Range(«T56»).Top
l = Range(«T56»).Left
Range(«T56»).Value = Str(t) + «:» + Str(l)
End Sub[/SRC]
загнал T56 в самый нижний правый угол и вижу результат 756 на 912
у меня же разрешение монитора 1280 на 1024 те врет примерно в 1.4 раза интересно с чем это связано?
Положение верхнего левого угла Экселя 0,0 учет высоты ленты и статусной строки сделан.
Если нужно разрешение, то см. функции АПИ
почти по Уокенбаху
'объявление функции API
Declare Function GetSystemMetrics Lib "user32" (ByVal nindex As Long) As Long
Public Const x_ = 0
Public Const y_ = 1
Sub razr_()
l_ = GetSystemMetrics(x_)
h_ = GetSystemMetrics(y_)
[a1] = l_ & "x" & h_
End Sub
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Может это связано с другим?
Как правило координаты ячеек задаются в Points (см. хелп)
1 point = 20 твипов = 1/72 дюйма
Масштаб экрана по умолчанию 96 точек(пикселей) на дюйм
Получается: 1 point = 96 / 72 пикселей = 4/3 пикселя
Т.е. теоретически, если домножить пиксели на 3/4 вы получите те самые Point-ы.
t = Range("T56").Top*3/4
Эта формула будет работать при условии, что Вы не поменяете масштаб экрана (Экран-Параметры — Дополнительно)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453
так и решил через соотношение 72/96
VovaK Пользователь Сообщений: 1716 |
В VBA есть возможность выдать координаты окна относительно экрана монитора, типа Window.Top. Есть координаты листа относительно его начала, которые можно вернуть через Cells или Range (типа .Cells(23,45).Left). В окне находится видимая часть листа. Вопрос: Есть ли возможность связать координаты окна и видимой части листа. |
слэн Пользователь Сообщений: 5192 |
надо пройтись по всем видимым меню и найти суммарные значения ширин или высот для прилепленных к верху или слева.. как-то так |
VovaK Пользователь Сообщений: 1716 |
Кто ищет тот всегда найдет. Ответ неожиданно прост: Windows.VisibleRange.Top |
GWolf Пользователь Сообщений: 153 |
Добрый вечер! |
GWolf Пользователь Сообщений: 153 |
#5 13.04.2012 17:22:10 Ага! Если немного подумать, то и ответ нашел: Sub wTop() With Windows(1).VisibleRange MsgBox «В активном окне » & countCellsVisible & » ячеек видимых.» & Chr(10) & _ может кому сгодится. |
Если Вам нужно отобразить широту или долготу в формате 56°54’31» (56 градусов 54 минуты 31 секунда), то этот пример для Вас.
В зависимости от желаемого результата и исходных данных существуют разные способы отображения широты и долготы в формате 56°54’31» (56 градусов 54 минуты 31 секунда).
Применение пользовательского формата
Если в ячейке содержится число вида 565431, то применение
пользовательского формата
позволит только правильно отобразить формат широты и долготы (56°54’31»), арифметические же операции с долготой или шириной произвести не удастся (при прибавлении 30 секунд будем иметь 56°54’61», а не 56°55’01»). Тем не менее, применим пользовательский формат.
Пользовательский формат вводим через диалоговое окно
Формат ячеек
. Для вызова окна нажмите
CTRL
+
1
. Выберите (
все форматы
), удалите все из поля
Тип
.
-
в поле
Тип
введите ###; -
затем введите туда же знак градуса (°), скопировав из Буфера обмена, в который его заранее туда вставили командой
Символ
(
)
. Или удерживая
ALT
, наберите на цифровой клавиатуре 0176 и отпустите
ALT
(Подробнее о вводе нестандартных символов читайте в статьеВвод символов с помощью клавиши ALT
);
- введите пробел, два нуля, апостроф (‘) и еще пробел;
- введите еще два нуля и еще 2 апострофа (‘) (двойная кавычка не подойдет или ее придется вводить вместе с обратным слешем «);
- нажмите ОК.
Теперь введите в ячейку 565431 и нажмите
ENTER
, в ячейке отобразится 56°54’31».
Преобразование из десятичного формата
Часто долготу и широту представляют в десятичном формате. Например, число 122,44 соответствует 122 градусам 26 минутам и 24 секундам. Проверить это не составляет труда: целая часть соответствует градусам, 1 градус соответствует единице, минута– 1/60 градуса, секунда – 1/60 минуты или 1/3600 градуса. Получаем: 122+26*(1/60)+24*(1/3600)=122,44.
С десятичным представлением можно производить необходимые вычисления, например, можно прибавить 2 минуты и 10 секунд: +2*(1/60)+10*(1/3600).
Представить 122,44 в формате долготы и широты с помощью простого форматирования не удастся, нужно использовать формулу для преобразования из десятичного формата. Если значение долготы 122,44 находится в ячейке
А1
, то для преобразования в нужный формат запишем формулу:
=ТЕКСТ(ОТБР(A1);»0″&СИМВОЛ(176)) &ТЕКСТ(ЦЕЛОЕ(ОСТАТ(A1;1)*60);»0′») &ТЕКСТ(60*ОСТАТ((ОСТАТ(A1;1)*60);1);»0′ «)
Результат:
122°26’24»
– значение в текстовом формате.
-
#1
Утро доброе. Помогите решить задачу.
У меня есть скрипт, определяющий в файле эксель, на листе — координаты определенной фигуры.
Работает этот скрипт — при запуске через консоль (по F5).
Скрипт определяет координаты этой фигуры — на листе эксель.
То есть — это относительные координаты (координаты листа эксель), а не реальные координаты монитора.
Скажите — можно ли заставить скрипт каким-то путем — определить реальные координаты фигуры, которые та имеет — в отношении монитора, а не листа ?
(Лист экселя не прокручивается вниз или вправо)
#include <Excel.au3>
$oExcel = _Excel_Open()
$oBook = _Excel_BookOpen($oExcel, @ScriptDir & "64573.xls")
$oBook.Sheets('Лист3').Select
$oShape = $oBook.ActiveSheet.Shapes("Ромб 7")
ConsoleWrite("X = " & $oShape.Left & @CRLF)
ConsoleWrite("Y = " & $oShape.Top & @CRLF)
ConsoleWrite("W = " & $oShape.Width & @CRLF)
ConsoleWrite("H = " & $oShape.Height & @CRLF)
_Excel_Close($oExcel)
-
64573.rar
18.4 КБ · Просмотры: 1
Alofa
Гость
-
#3
Alofa, подскажите — куда именно эту функцию добавить в мой код ?
Alofa
Гость
-
#4
OffTopic:
OlegSmirnov сказал(а):
К сожалению сейчас на телефоне, проверю позже.
Добавлено:
Сообщение автоматически объединено: 6 Дек 2017
Проверил, не катит ops:
-
#5
Alofa, так все-таки — куда именно эту функцию добавить в мой код ?