人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 辦公軟件教程 > 詳細頁面

Excel VBA 窗體之放大鏡窗體 完成代碼

Excel VBA 窗體之放大鏡窗體 完成代碼

更新時間:2024-01-23 文章作者:未知 信息來源:網絡 閱讀次數:

Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使Excel成為最流行的個人計算機數據處理軟件。

在 Windows 的附件中有一個工具叫放大鏡,看著不錯有意思。有時候自己動手做一個也很有感覺。那我們就用 VBA 來做一個簡陋版的放大鏡,看著簡陋其實也不錯的。

Excel VBA 窗體之放大鏡窗體 實現代碼

?

?

附件下載:

點擊從百度網盤下載

?

操作如下
? 在Excel 的VBE窗口中插入一個用戶窗體,將其命名為 frmMagnifyingGlass。然后再添加一個模塊。在窗體和模塊中添加后面所列代碼。
? 在工作薄中的任意工作表中添加一窗體按鈕控件,將指定其設置宏為 btnShowMagnifyingGlass_Click。其供示范之用

?

具體代碼:

"mdMagnifyingGlass" 模塊代碼

Option Explicit
'********************************************
'---此模塊為回調函數和工作表中按鈕調用程序---
'********************************************
#If Win64 Then '64位
'獲取設備數據
Public Declare PtrSafe Function GetDeviceCaps _
Lib "gdi32"( _
ByVal hdc As LongPtr, _
ByVal nIndex As Long) _
As Long
'釋放設備場景
Public Declare PtrSafe Function ReleaseDC _
Lib "user32" ( _
ByVal Hwnd As LongPtr, _
ByVal hdc As LongPtr) _
As Long
'獲取鼠標指針的當前位置
Public Declare PtrSafe Function GetCursorPos _
Lib "user32" ( _
lpPoint As POINTAPI) _
As Long
'取得設備場景
Public Declare PtrSafe Function GetDC _
Lib "user32" ( _
ByVal Hwnd As LongPtr) _
As LongPtr
'將一幅位圖從一個設備場景復制到另一個
Public Declare PtrSafe Function StretchBlt _
Lib "gdi32" ( _
ByVal hdc As LongPtr, _
ByVal x As Long, _
ByVal y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As LongPtr, _
ByVal xSrc As Long, _
ByVal ySrc As Long, _
ByVal nSrcWidth As Long, _
ByVal nSrcHeight As Long, _
ByVal dwRop As Long) _
As Long
'查找窗口
Public Declare PtrSafe Function FindWindow _
Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As LongPtr
Public FHwnd As LongPtr
Public FHdc As LongPtr
#Else
'獲取設備數據
Public Declare Function GetDeviceCaps _
Lib "gdi32" ( _
ByVal hdc As Long, _
ByVal nIndex As Long) _
As Long
'釋放設備場景
Public Declare Function ReleaseDC _
Lib "user32" ( _
ByVal Hwnd As Long, _
ByVal hdc As Long) _
As Long
'獲取鼠標指針的當前位置
Public Declare Function GetCursorPos _
Lib "user32" ( _
lpPoint As POINTAPI) _
As Long
'取得設備場景
Public Declare Function GetDC _
Lib "user32" ( _
ByVal Hwnd As Long) _
As Long
'將一幅位圖從一個設備場景復制到另一個
Public Declare Function StretchBlt _
Lib "gdi32" ( _
ByVal hdc As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, _
ByVal xSrc As Long, _
ByVal ySrc As Long, _
ByVal nSrcWidth As Long, _
ByVal nSrcHeight As Long, _
ByVal dwRop As Long) _
As Long
'查找窗口
Public Declare Function FindWindow _
Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As Long
Public FHwnd As Long
Public FHdc As Long
#End If
'以下定義類型
Private Type POINTAPI
x As Long
y As Long
End Type
'以下聲明常數和變量
Public Const SRCCOPY = &HCC0020
Public Const LOGPIXELSX = &H58
Public FLogPixelsx As Long
Private FPoint As POINTAPI
Private dx As Long
Private dy As Long
'***************************
'---Settimer函數的回調函數---
'***************************
Public Function TimeOutProc(ByVal Hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal SysTime As Long) As Long
'獲得當前鼠標位置
Call GetCursorPos(FPoint)
dx = FPoint.x: dy = FPoint.y
'將位圖復制到窗體設備場景
Call StretchBlt(FHdc, 0, 0, frmMagnifyingGlass.InsideWidth * FLogPixelsx / 72, frmMagnifyingGlass.InsideHeight * FLogPixelsx / 72, _
GetDC(0), dx, dy, 150, 150 * frmMagnifyingGlass.InsideHeight / frmMagnifyingGlass.InsideWidth, SRCCOPY)
End Function
'此程序為工作表中按鈕調用
Sub btnShowMagnifyingGlass_Click()
'顯示窗體(無模式)
frmMagnifyingGlass.Show 0
End Sub

"frmMagnifyingGlass" 窗體代碼

Option Explicit
'***********************
'------窗體過程代碼------
'***********************
'以下聲明API函數
#If Win64 Then '64位
'用來設置Settimer過程。
Private Declare PtrSafe Function SetTimer _
Lib "user32" ( _
ByVal Hwnd As LongPtr, _
ByVal nIDEvent As LongPtr, _
ByVal uElapse As Long, _
ByVal lpTimerfunc As LongPtr) _
As LongPtr
'結束Settimer過程
Private Declare PtrSafe Function KillTimer _
Lib "user32" ( _
ByVal Hwnd As LongPtr, _
ByVal nIDEvent As LongPtr) _
As Long
'以下定義變量
Private FTID As LongPtr
#Else
'用來設置Settimer過程。
Private Declare Function SetTimer _
Lib "user32" ( _
ByVal Hwnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerfunc As Long) _
As Long
'結束Settimer過程
Private Declare Function KillTimer _
Lib "user32" ( _
ByVal Hwnd As Long, _
ByVal nIDEvent As Long) _
As Long
'以下定義變量
Private FTID As Long
#End If
Private Sub UserForm_Initialize()
'取得窗口句柄
FHwnd = FindWindow(vbNullString, Me.Caption)
'取得窗體設備場景
FHdc = GetDC(FHwnd)
'取得每英寸所包含的像素
FLogPixelsx = GetDeviceCaps(GetDC(0), LOGPIXELSX)
'設置Settimer 過程
FTID = SetTimer(FHwnd, 0, 100, AddressOf TimeOutProc)
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'結束Settimer過程
If FTID <> 0 Then Call KillTimer(FHwnd, FTID)
'釋放設備場景,記住一定要釋放
Call ReleaseDC(FHwnd, FHdc)
End Sub


Excel整體界面趨于平面化,顯得清新簡潔。流暢的動畫和平滑的過渡,帶來不同以往的使用體驗。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 昭平县| 盐山县| 从江县| 长寿区| 昆明市| 仪陇县| 那坡县| 溧阳市| 兰溪市| 大港区| 宾阳县| 磐安县| 神木县| 永城市| 依兰县| 斗六市| 蒙城县| 寿光市| 苏尼特右旗| 南陵县| 民勤县| 镇宁| 泰宁县| 会昌县| 秭归县| 汽车| 都兰县| 浪卡子县| 浮山县| 广安市| 日照市| 寿光市| 乳源| 平南县| 永福县| 宝清县| 攀枝花市| 同心县| 通江县| 富裕县| 巨鹿县|