久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Excel中精確控制鼠標光標位置

     yuxinrong 2010-01-12

    Excel中精確控制鼠標光標位置

    2009年1月18日

    前面的尺寸單位中介紹過Window對象的PointsToScreenPixelsX和PointsToScreenPixelsY方法,這兩個方法對精確控制鼠標光標在Excel中的位置很有幫助。這個例子示范控制鼠標光標到指定的單元格或控件中心,并可模擬鼠標單擊控件如按鈕的功能,光標的位置是以像素為單位,而控件或單元格在Excel中的位置是以Point為單位,所以需要用到前面的換算自定義函數。

    Public Type POINTAPI
    x As Long
    y As Long
    End Type
    ' 設置鼠標光標位置
    Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    ' 鼠標動作模擬
    Public Const MOUSEEVENTF_LEFTDOWN = &H2
    Public Const MOUSEEVENTF_LEFTUP = &H4
    Public Declare Sub mouse_event Lib "user32" ( _
    ByVal dwFlags As Long, _
    ByVal dx As Long, _
    ByVal dy As Long, _
    ByVal cButtons As Long, _
    ByVal dwExtraInfo As Long)
    ' 移動鼠標光標到指定的單元格中心,iRow和iCol分別為指定單元格行和列
    Sub SetCursorToCell(iRow As Integer, iCol As Integer)
    Dim pt As POINTAPI
    Dim iTRow As Integer
    Dim iTCol As Integer
    ' 當前窗口可見范圍的總行數和列數
        iTRow = ActiveWindow.VisibleRange.Rows.Count
    iTCol = ActiveWindow.VisibleRange.Columns.Count
    ' 如果指定單元格在可見范圍之外,則選擇該單元格讓其在可見范圍中顯示
        If iRow < ActiveWindow.VisibleRange.Row Or iRow > ActiveWindow.VisibleRange.Row + iTRow - 1 Or _
    iCol < ActiveWindow.VisibleRange.Column Or iCol > ActiveWindow.VisibleRange.Column + iTCol - 1 Then
    Cells(iRow, iCol).Select
    End If
    ' 指定單元格中心在屏幕坐標中X軸的位置,以像素為單位
        pt.x = ActiveWindow.PointsToScreenPixelsX(0) + _
    Point2PixelX(Cells(iRow, iCol).Left + Cells(iRow, iCol).Width / 2)
    ' 指定單元格中心在屏幕坐標中Y軸的位置,以像素為單位
        pt.y = ActiveWindow.PointsToScreenPixelsY(0) + _
    Point2PixelX(Cells(iRow, iCol).Top + Cells(iRow, iCol).Height / 2)
    ' 設置鼠標光標到指定位置
        SetCursorPos pt.x, pt.y
    End Sub
    ' 移動鼠標光標到指定的控件中心,vControl為指定空間
    Sub SetCursorToControl(vControl As Variant)
    Dim pt As POINTAPI
    ' 如果控件顯示在可見范圍之外,選擇控件覆蓋的單元格使其可見
        With ActiveWindow.VisibleRange
    If vControl.Left + vControl.Width > .Left + .Width Or vControl.Top + vControl.Height > .Top + .Height Then
    vControl.BottomRightCell.Select
    End If
    If vControl.Left < .Left Or vControl.Top < .Top Then
    vControl.TopLeftCell.Select
    End If
    End With
    ' 指定控件中心在屏幕中標中X軸的位置,以像素為單位
        pt.x = ActiveWindow.PointsToScreenPixelsX(0) + Point2PixelX(vControl.Left + vControl.Width / 2)
    ' 指定控件中心在屏幕中標中Y軸的位置,以像素為單位
        pt.y = ActiveWindow.PointsToScreenPixelsY(0) + Point2PixelY(vControl.Top + vControl.Height / 2)
    ' 設置鼠標光標到指定位置
        SetCursorPos pt.x, pt.y
    End Sub
    Sub ClickControl(iControl As Variant)
    ' 設置光標到指定控件
        SetCursorToControl iControl
    ' 模擬鼠標單擊的動作
        mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0&, 0&
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0&, 0&
    End Sub
    ' 移動鼠標光標到控件CommandButton1
    Sub test1()
    SetCursorToControl Sheet1.CommandButton1
    End Sub
    ' 模擬單擊控件CommandButton1
    Sub test2()
    ClickControl Sheet1.CommandButton1
    End Sub
    ' 移動鼠標光標到單元格B2
    Sub test3()
    SetCursorToCell 2, 2
    End Sub

    另外Excel窗體是以屏幕坐標位置顯示的,但單位仍然是Point,如果需要在指定位置顯示窗體,例如在所選擇的單元格右側,同樣要用到尺寸轉換的自定義函數和Window對象的PointsToScreenPixelsX和PointsToScreenPixelsY方法。

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' 如果窗體UserForm1沒有顯示,則顯示它
        If UserForm1.Visible = False Then
    UserForm1.Show 0
    End If
    ' 移動窗體到選擇的單元格右側位置
        UserForm1.Move Pixel2PointX(ActiveWindow.PointsToScreenPixelsX(0)) + Target.Left + Target.Width, _
    Pixel2PointY(ActiveWindow.PointsToScreenPixelsY(0)) + Target.Top
    End Sub

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 国产边摸边吃奶边叫做激情视频| 国产小受被做到哭咬床单GV| 亚洲欧美综合人成在线| 国产成人8X人网站视频| 亚洲人成人无码网WWW电影首页 | 东京一本一道一二三区| 国产揄拍国产精品| 99精品国产在热久久婷婷| 日本一区二区不卡精品| 国产乱码精品一区二区三区四川人| 少妇高潮喷水正在播放| 欧美午夜成人片在线观看| 亚洲国产成人久久久网站| 巨胸美乳无码人妻视频漫画| 亚洲AV区无码字幕中文色 | 国内精品久久久久久久影视| 午夜毛片不卡免费观看视频| 亚洲ΑV久久久噜噜噜噜噜| 日本高清视频网站www| 毛片无遮挡高清免费| 国产不卡一区二区在线| 色综合久久久久综合99| 国产二区三区不卡免费| 成人免费看片又大又黄| 亚洲成A人片在线观看的电影| 亚洲爆乳精品无码AAA片| 人妻少妇456在线视频| 亚洲午夜无码久久久久蜜臀av| 强奷漂亮少妇高潮伦理| 欧美巨大极度另类| 精品无码人妻一区二区三区品 | 国产性色的免费视频网站| 日本丶国产丶欧美色综合| 国产午夜A理论毛片| 精品国产乱码久久久久久郑州公司| 久久午夜色播影院| 蜜臀av无码一区二区三区| 久久精品夜夜夜夜夜久久| 18禁成人免费无码网站| 我国产码在线观看av哈哈哈网站| 嫩草院一区二区乱码|