Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統(tǒng)的電腦編寫的一款電子表格軟件。直觀的界面、出色的計(jì)算功能和圖表工具,再加上成功的市場營銷,使Excel成為最流行的個(gè)人計(jì)算機(jī)數(shù)據(jù)處理軟件。 在VBA中當(dāng)我們有時(shí)需要顯示一個(gè)無標(biāo)題欄的窗體作為啟動(dòng)的界面,但是VBA的窗體不可以直接設(shè)置這樣的屬性,只有通過代碼來實(shí)現(xiàn) 
附件下載: 點(diǎn)擊鏈接從百度網(wǎng)盤下載 操作如下: ?在Excel的VBE窗口中插入一個(gè)用戶窗體,將其命名為DelTitleForm。在用戶窗體中添加兩個(gè)按鈕,將其分別更名為和BtCancel。然后再添加一個(gè)模塊。在窗體和模塊中添加后面所列代碼。 ?在工作薄中的任意工作表中添加一窗體按鈕控件,將指定其設(shè)置宏為ShowForm。其供示范之用 具體代碼: "mdNoTitle"模塊代碼 ? Sub ShowForm() DelTitleForm.Show End Sub "DelTitleForm" 窗體代碼 '******************************** '---此模塊演示怎樣刪除窗體標(biāo)題欄--- '******************************** '以下聲明API函數(shù) #If Win64 Then '64位 '取得窗體樣式位 Private Declare PtrSafe Function GetWindowLong _ Lib "user32" _ Alias "GetWindowLongPtrA" ( _ ByVal Hwnd As LongPtr, _ ByVal nIndex As Long) _ As LongPtr '查找窗口 Private Declare PtrSafe Function FindWindow _ Lib "user32" _ Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) _ As LongPtr '設(shè)置窗體樣式位 Private Declare PtrSafe Function SetWindowLong _ Lib "user32" _ Alias "SetWindowLongPtrA" ( _ ByVal Hwnd As LongPtr, _ ByVal nIndex As Long, _ ByVal dwNewLong As LongPtr) _ As LongPtr '繪制窗體標(biāo)題欄 Private Declare PtrSafe Function DrawMenuBar _ Lib "user32" ( _ ByVal Hwnd As LongPtr) _ As Long '視情況向和窗體發(fā)送消息 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 '釋放鼠標(biāo) Private Declare PtrSafe Function ReleaseCapture _ Lib "user32" () _ As Long #Else '取得窗體樣式位 Private Declare Function GetWindowLong _ Lib "user32" _ Alias "GetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long) _ As Long '查找窗口 Private Declare Function FindWindow _ Lib "user32" _ Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) _ As Long '設(shè)置窗體樣式位 Private Declare Function SetWindowLong _ Lib "user32" _ Alias "SetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) _ As Long '繪制窗體標(biāo)題欄 Private Declare Function DrawMenuBar _ Lib "user32" ( _ ByVal hwnd As Long) _ As Long '視情況向窗體發(fā)送消息 Private Declare Function SendMessage _ Lib "user32" _ Alias "SendMessageA" ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) _ As Long '釋放鼠標(biāo)控制 Private Declare Function ReleaseCapture _ Lib "user32" () _ As Long #End If #If Win64 Then '64位 Private hWndForm As LongPtr Private FIstype As LongPtr #Else Private hWndForm As Long Private FIstype As Long #End If '以下定義常數(shù)和變量 Private Const GWL_STYLE = (-16) '窗口樣式 Private Const WS_CAPTION = &HC00000 Private Const WM_SYSCOMMAND = &H112 Private Const SC_MOVE_MOUSE = &HF012& '---關(guān)閉按鈕--- Private Sub BtCancel_Click() Unload Me End Sub '---窗體雙擊--- Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Unload Me End Sub '---窗體初始化--- Private Sub UserForm_Initialize() On Error Resume Next '查找窗體句柄 hWndForm = FindWindow("ThunderDFrame", Me.Caption) '取得窗體樣式 FIstype = GetWindowLong(hWndForm, GWL_STYLE) '窗體樣式:原樣式無標(biāo)題 FIstype = FIstype And Not WS_CAPTION '重設(shè)窗體樣式 SetWindowLong hWndForm, GWL_STYLE, FIstype '重繪窗體標(biāo)題欄 DrawMenuBar hWndForm End Sub '---鼠標(biāo)按下--- Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _ ByVal X As Single, ByVal Y As Single) '釋放控制 ReleaseCapture '向窗體發(fā)送消息 SendMessage hWndForm, WM_SYSCOMMAND, SC_MOVE_MOUSE, 0 End Sub
Excel整體界面趨于平面化,顯得清新簡潔。流暢的動(dòng)畫和平滑的過渡,帶來不同以往的使用體驗(yàn)。 |