Страницы: 1 2 След.
RSS
Курсор
 
Кто знает как управлять програмно курсором мыши или где посмотреть об этом.  
Я имею ввиду, как при создании макроса сначала курсор мыши определить в заданную ячейку и не только в строке, а в любую ячейку таблицу.
 
Может это вам поможет    
 
http://msoffice.nm.ru/faq/macros/winapi2.htm
 
Я посмотрел ссылку, попробовал применить, но меня не получилось.  
Подскажите, как в начале запуска макроса поставить курсор мыши поставить в первую ячейку строки. Какие строки нужно добавить к макросу.
 
SetCursorPos 0&, 0&  
Вот так курсор будет в левом верхнем углу.  
SetCursorPos 0&, 100&  
так сместится ниже. А в первую ячейку... у меня один набор панелей инструментов, у вас другой. Вопрос некорректный. Подбирайте.
 
Курсор перейдёт на ячейку А1  
 
 
Private Declare Function SetCursorPos Lib "user32.dll" (ByVal X As Long, ByVal Y As Long) As Long  
 
Sub SetCursorToA1()  
Dim XDistance&, YDistance&  
   With ActiveWindow  
       XDistance = .PointsToScreenPixelsX(Range("A1")) + 30  
       YDistance = .PointsToScreenPixelsY(Range("A1")) + 8  
   End With  
   SetCursorPos XDistance, YDistance  
End Sub
 
Почему-то выполнение макроса останавливается на строке SetCursorPos XDistance, YDistance. Пока не пойму.
 
Мой код не верный. Надо ещё подумать...
 
Павел, а у меня становится точно над А1.
 
{quote}{login=Юрий М}{date=17.01.2009 09:09}{thema=}{post}Павел, а у меня становится точно над А1.{/post}{/quote}  
 
Ну, это да. А ты попробуй поставить курсор над H3 - ничего не получится.
 
А я целюсь только в А1. И попадаю 100%  
Это говорит о точности наведения :-)
 
Я понял почему так. Паш, вспомни Врунгеля: "Как Вы лодку назовете, так она и поплывёт". А теперь глянь на название макроса. Во... :-)
 
ну, мы не ищем лёгких путей ) См. файл
 
еще пример
 
{quote}{login=Pavel55}{date=18.01.2009 12:06}{thema=}{post}ну, мы не ищем лёгких путей ) См. файл{/post}{/quote}  
А если прокрутить строки так, чтобы была видна ячейка N100, например.  
И как тогда уствновить курсор в нее?
 
{quote}{login=}{date=18.01.2009 12:42}{thema=Re: }{post}{quote}{login=Pavel55}{date=18.01.2009 12:06}{thema=}{post}ну, мы не ищем лёгких путей ) См. файл{/post}{/quote}  
А если прокрутить строки так, чтобы была видна ячейка N100, например.  
И как тогда уствновить курсор в нее?{/post}{/quote}  
 
В неё - это куда? в N100 или в H10 ?
 
В N100. И еще если сделать масштаб 40%? то уже курсор не попадает в H10
 
Павел, что-то мне не везёт сегодня: прошу в А1 - сразу ругается, прошу в D4 - ругается с задержкой.    
P.S. Сижу и думаю - и зачем это? Вот для какой конкретной цели это можно применить? И ничего не придумывается. А макрос здоровый. упрямый такой. Может, ну его?
 
{quote}{login=}{date=18.01.2009 12:50}{thema=}{post}В N100. И еще если сделать масштаб 40%? то уже курсор не попадает в H10{/post}{/quote}  
 
Чтобы курсор вставал на N100 измените H10 на N100 в макросе  
Да, если масштаб будет 40%, то курсор не попадает в ячейку H10. Но я думаю, вы не работаете с таблицей в Excel с масштабом 40%.
 
да, наверное, надо ещё подумать) может другой способ есть )
 
{quote}{login=Pavel55}{date=18.01.2009 01:08}{thema=Re: }{post}{quote}{login=}{date=18.01.2009 12:50}{thema=}{post}В N100{/post}{/quote}  
Чтобы курсор вставал на N100 измените H10 на N100 в макросе  
{/post}{/quote}  
Смысл вопроса был в том, что если строки прокрутить (вниз или вправо) так, что первых строк уже не будет видно в окне,  то метод не сработает.
 
А может всё проще? Может человеку нужно просто программно встать (выделить/сделать активной) нужную ячейку? А мы тут голову ломаем. Ведь такие случаи уже были. Mishel, нельзя ли уточнить?
 
Идея написания макроса состояла в том, чтобы добавлять строки этото макроса в другие макросы и при их запуске  не думать о том, где в стоит курсор (по аналогии - машина трогается с места всегда на первой скорости). Так и в данном случае - курсор стоит в любой ячейке строки и при запуске любого макроса курсор автоматом перемещался бы в начало строки (к первой ячейке).
 
а как бы еще сделать чтобы при пуске формы курсор в текстбокс вставлялся
 
{quote}{login=Юрий М}{date=18.01.2009 01:47}{thema=}{post}А может всё проще? Может человеку нужно просто программно встать (выделить/сделать активной) нужную ячейку? А мы тут голову ломаем. Ведь такие случаи уже были. Mishel, нельзя ли уточнить?{/post}{/quote}  
 
Юрий, а ведь Вы правы. Очень похоже на просто...  
Range("A1").Select / Range("A1").Activate в модуле Эта книга и на событии Открытие книги...
 
{quote}{login=Mishel}{date=18.01.2009 09:54}{thema=}{post}Идея написания макроса состояла в том, чтобы добавлять строки этото макроса в другие макросы и при их запуске  не думать о том, где в стоит курсор (по аналогии - машина трогается с места всегда на первой скорости). Так и в данном случае - курсор стоит в любой ячейке строки и при запуске любого макроса курсор автоматом перемещался бы в начало строки (к первой ячейке).{/post}{/quote}  
Mishel, Mishel... получается, что Вы всем нам тут голову заморочили. Я вот о чём: встаньте на ячейку А1. Неважно каким способом - кликнув туда мышкой или при помощи клавиш управления курсором. А теперь просто подвигайте мышу. Выбрана (активна) ячейка А1, а курсор мыши в это время перемещается где угодно. Понимаете разницу? Ведь Вы в своём вопросе говорите конкретно о КУРСОРЕ МЫШКИ А нужно Вам, оказывается, выбрать ячейку! Столько времени на Вас Павел потратил впустую... Потрудитесь корректно формулировать свои вопросы.
 
{quote}{login=случайный}{date=18.01.2009 10:17}{thema=}{post}а как бы еще сделать чтобы при пуске формы курсор в текстбокс вставлялся{/post}{/quote}  
Вставьте этот код в модуль Формы.  
- - -  
Private Sub UserForm_Initialize()  
TextBoxN.SetFocus  
End Sub  
- - -  
Где N - номер Вашего ТекстБокса. Т.е. фокус на этот ТекстБокс.
 
спасибо Юрий
 
а как сделать чтобы это работало если форма  
в не модальном режиме
 
Private Sub UserForm_Activate()  
TextBox2.SetFocus  
End Sub
 
Дождусь ответа топик стартера и..., возможно, пополню список "Чего хочет Ирэна", добавив в него автора...
Страницы: 1 2 След.
Читают тему
Наверх