Страницы: 1
RSS
Перемещение курсора мыши по макросу в активную ячейку
 
Добрый день всем !

Столкнулся с проблемой - нужно по кнопке макроса переместить курсор мыши в активную ячейку на листе (те найти координаты активной ячейки и перевести курсор мыши внутрь этих координат).
Активная ячейка может быть в диапазоне  Q3:Q400  те так примерно
Код
Sub ПереместитьКурсор()
If Not Intersect(ActiveCell, Range("Q4:Q400")) Is Nothing Then
''''''' переместить курсор мыши в активную ячейку 
End If
End Sub
начал искать похожую задачу - ничего не смог найти
Изменено: brik - 26.05.2018 14:34:55
 
курсор и без макроса в активной ячейке извините, курсор мыши-таки можно перетащить
Изменено: Ігор Гончаренко - 26.05.2018 14:53:09
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
такто да можно перетащить  - просто это часть макроса - важно чтоб именно по кнопке макроса курсор переместился
 
С помощью API. Координаты вычисляются приблизительно и при изменении масштаба экрана в отличный от стандартного, могут быть сюрпризы
Код
Declare Function SetCursorPos Lib "user32" (ByVal x As Integer, ByVal y As Integer) As Integer

Sub CursorMove()
Dim iX As Long, iY As Long
If Not Intersect(ActiveCell, Range("D5:D20")) Is Nothing Then
    With ActiveCell
        iX = ActiveWindow.PointsToScreenPixelsX((.Left + .Width / 2) * 4 / 3)
        iY = ActiveWindow.PointsToScreenPixelsY((.Top + .Height / 2) * 4 / 3)
        Call SetCursorPos(iX, iY)
    End With
End If
End Sub
Согласие есть продукт при полном непротивлении сторон
 
поместите обьявление функции в начале модуля      
Код
Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
скопируйте в модуль эту процедуру
Код
Sub SetCursorPos2CentreActiveCell()
  SetCursorPos _
    ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveCell.Left + ActiveCell.Width / 2), _
    ActiveWindow.ActivePane.PointsToScreenPixelsY(ActiveCell.Top + ActiveCell.Height / 2)
End Sub

в Вашем макросе вместо '
'''''' переместить курсор мыши в активную ячейку
напишите
SetCursorPos2CentreActiveCell
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо огромное Ігор Гончаренко и  Sanja  - оба варианта  замечательно работают !
Страницы: 1
Наверх