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

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

Excel VBA 窗體之特殊形狀窗體 幾何形狀組合窗體 完成代碼

Excel VBA 窗體之特殊形狀窗體 幾何形狀組合窗體 完成代碼

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

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

在VBA中我們有時需要一些特殊形狀的窗體來美化我們的程序,比如說幾個幾何形狀的組合樣式的窗體。那我們就來作一個同心圓形狀的窗體: 本示例主要運用 API 函數來定制化Excel中的用戶窗體,使其顯示特殊形狀

Excel VBA 窗體之特殊形狀窗體 幾何形狀組合窗體 實現代碼

附件下載:

點擊鏈接從百度網盤下載

操作如下:

?在Excel的VBE窗口中插入一個用戶窗體,將其命名為EspecialForm。然后再添加一個模塊。然后在窗體和模塊中添加后面所列代碼。

?在工作薄中的任意工作表中添加一窗體按鈕控件,將指定其設置宏為ShowForm。其供示范之用

具體代碼:

"mdEspecial"模塊代碼

Sub btnShowEspecial_Click()
frmEspecial.Show
End Sub

"frmEspecial" 窗體代碼

Option Explicit
'**********************************
'---此模塊主要是創建了一個圓環窗體---
'**********************************
'以下聲明API函數
#If Win64 Then '64位
'視情況向和窗體發送消息
Private Declare PtrSafe Function SendMessage _
Lib "user32" _
Alias "SendMessageA" ( _
ByVal Hwnd As LongPtr, _
ByVal wMsg As Long, _
ByVal wParam As LongPtr, _
lParam As Any) _
As LongPtr
'創建一個內切于矩形的橢圓
Private Declare PtrSafe Function CreateEllipticRgn _
Lib "gdi32" ( _
ByVal X1 As Long, _
ByVal Y1 As Long, _
ByVal X2 As Long, _
ByVal Y2 As Long) _
As LongPtr
'以特定的方式合并區域
Private Declare PtrSafe Function CombineRgn _
Lib "gdi32" ( _
ByVal hDestRgn As LongPtr, _
ByVal hSrcRgn1 As LongPtr, _
ByVal hSrcRgn2 As LongPtr, _
ByVal nCombineMode As Long) _
As Long
'給窗體設置區域,而舍棄此區域外的其他區域
Private Declare PtrSafe Function SetWindowRgn _
Lib "user32" ( _
ByVal Hwnd As LongPtr, _
ByVal hRgn As LongPtr, _
ByVal bRedraw As Long) _
As Long
'查找窗口
Private Declare PtrSafe Function FindWindow _
Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As LongPtr
'釋放鼠標
Private Declare PtrSafe Function ReleaseCapture _
Lib "user32" () _
As Long
#Else
'視情況向和窗體發送消息
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" ( _
ByVal Hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) _
As Long
'創建一個內切于矩形的橢圓
Private Declare Function CreateEllipticRgn _
Lib "gdi32" ( _
ByVal X1 As Long, _
ByVal Y1 As Long, _
ByVal X2 As Long, _
ByVal Y2 As Long) _
As Long
'以特定的方式合并區域
Private Declare Function CombineRgn _
Lib "gdi32" ( _
ByVal hDestRgn As Long, _
ByVal hSrcRgn1 As Long, _
ByVal hSrcRgn2 As Long, _
ByVal nCombineMode As Long) _
As Long
'給窗體設置區域,而舍棄此區域外的其他區域
Private Declare Function SetWindowRgn _
Lib "user32" ( _
ByVal Hwnd As Long, _
ByVal hRgn As Long, _
ByVal bRedraw As Long) _
As Long
'查找窗口
Private Declare Function FindWindow _
Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As Long
'釋放鼠標
Private Declare Function ReleaseCapture _
Lib "user32" () _
As Long
#End If
'聲明常數及變量
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MOVE_MOUSE = &HF012&
Private Const RGN_XOR = 3 '兩個源區域并集之外的部分
#If Win64 Then '64位
Dim FHwnd As LongPtr
Dim FRgn1 As LongPtr
Dim FRgn2 As LongPtr
#Else
Dim FHwnd As Long
Dim FRgn1 As Long
Dim FRgn2 As Long
#End If
'窗體雙擊
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Unload Me
End Sub
'窗體初始化
Private Sub UserForm_Initialize()
FRgn1 = CreateEllipticRgn(10, 40, 200, 230) '創建一個圓
FRgn2 = CreateEllipticRgn(30, 60, 180, 210) '創建一個圓
CombineRgn FRgn1, FRgn1, FRgn2, RGN_XOR '合并兩個圓,取其不相交的部分
FHwnd = FindWindow(vbNullString, Me.Caption) '查找窗體句柄
SetWindowRgn FHwnd, FRgn1, 1 '設置窗體區域,一個圓環
End Sub
'窗體鼠標按下
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ReleaseCapture '釋放鼠標
SendMessage FHwnd, WM_SYSCOMMAND, SC_MOVE_MOUSE, 0
End Sub


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

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

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 松潘县| 旬阳县| 南安市| 自治县| 长宁县| 双辽市| 康平县| 宣城市| 安平县| 凤阳县| 弥勒县| 兴业县| 赤水市| 颍上县| 锡林浩特市| 义马市| 景宁| 鱼台县| 峨边| 济宁市| 广南县| 双城市| 江川县| 彩票| 平阳县| 旬邑县| 庐江县| 榕江县| 贵州省| 随州市| 延安市| 新源县| 闸北区| 财经| 漾濞| 丹阳市| 武功县| 西丰县| 鲁甸县| 九江市| 邵武市|