久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Excel制表技巧(29)自定義B

 甘苦人生2010 2013-12-14

       VBA之API篇

 什么是Windows API? Windows 這個多作業(yè)系統(tǒng)除了協(xié)調(diào)應(yīng)用程式的執(zhí)行,、分配內(nèi)存、管理系統(tǒng)資源…之外,, 她同時也是一個很大的服務(wù)中心,,調(diào)用這個服務(wù)中心的各種服務(wù)(每一種服務(wù)就是一個函數(shù)),可以幫應(yīng)用程式達(dá)到開啟視窗,、描繪圖形,、使用周邊設(shè)備…等目的,由於這些函數(shù)服務(wù)的對象是應(yīng)用程式(Application),, 所以便稱之為 Application Programming Interface,,簡稱 API 函數(shù)。WIN32 API也就是MicrosoftWindows 32位平臺的應(yīng)用程序編程接口,。 凡是在 Windows 工作環(huán)境底下執(zhí)行的應(yīng)用程式,,都可以調(diào)用Windows API。 
 Visual Basic以友好易學(xué)的可視化開發(fā)環(huán)境聞名于世,,成為人們學(xué)習(xí)計算機編程的首選語言(以前是,,現(xiàn)在不吃香了,而且VBA也開始轉(zhuǎn)向.net了,,又要堅苦學(xué)習(xí)了*~_~*),。目前,還有很多人使用著Visual Basic語言,。如果您想在這茫茫眾生中出類拔萃,,那么您就不得不學(xué)習(xí)API編程。不懂API,,那可成不了高手(所以我不是*~_~*),。API說到底就是一系列的底層函數(shù),,是系統(tǒng)提供給 用戶用于進(jìn)入操作系統(tǒng)核心,進(jìn)行高級編程的途徑,。通過在Visual Basic應(yīng)用程序中聲明外部過程就能夠 訪問Windows API(以及其它的外部DLLs),。在聲明了過程之后,調(diào)用它的方法與調(diào)用Visual Basic自己的過程相同,。  
在前面我們已說過什么是VBA,?VBA是Visual Basic for Applications 的簡稱,Visual Basic(VB)在office的應(yīng)用版,。所以在VBA里也能調(diào)用API,。 
 實際上如果我們要開發(fā)出更靈活、更實用,、更具效率的應(yīng)用程序,,必然要涉及到直接使用API函數(shù),雖然類庫和控件使應(yīng)用程序的開發(fā)簡單的多,,但它們只提供WINDOWS的一般功能,,對于比較復(fù)雜和特殊的功能來說,使用類庫和控件是非常難以實現(xiàn)的,,這時就需要采用API函數(shù)來實現(xiàn),。  
  這也是API函數(shù)使用的場合,所以我們對待API函數(shù)不必刻意去研究每一個函數(shù)的用法,,那也是不現(xiàn)實的(能用得到的API函數(shù)有幾千個呢),。正如某位大蝦所說:API不要去學(xué),在需要的時候去查API幫助就足夠了,。但是,,許多API函數(shù)令人難以理解,易于誤用,,還會導(dǎo)致出錯(調(diào)用API時稍有不慎就可能導(dǎo)致API編程錯誤,,出現(xiàn)難于捕獲或間歇性錯誤,甚至出現(xiàn)程序崩潰,,乃至死機*~_~*),,這一切都阻礙了它的推廣。想快速掌握API函數(shù)用法,,最好就是通過對API函數(shù)的分類,,結(jié)合一些有趣的實例,應(yīng)該可以達(dá)到快速掌握的目的,。 
 前面的內(nèi)容中,,有講到API幫助,大家可以從網(wǎng)上搜索獲得,,如果有MSDN光盤的話,,里面其實就很全了,,而關(guān)于API的實例網(wǎng)上也很多,,畢竟VB目前還是一個使用很廣的語言,,大家可以自行在網(wǎng)上搜索。而下面的貼子,,就是我收集的幾個VBA利用API實現(xiàn)一些自定義Excel項的內(nèi)容,。難懂,但很有趣,,正如我之前所說的,,沒有辦不到的,只有想不到的…… 

         Excel自定義圖標(biāo)與標(biāo)題

修改標(biāo)題很簡單,,通過Application.Caption就能獲得和設(shè)定,,我們將修改后的標(biāo)題保存在本身工作簿和第一個工作表的A2格中,讓下一次給夠自行更改,;而重置只要改回“Microsoft Excel”即可,。代碼如下: 
'設(shè)定標(biāo)題 
Sub CaptionSet() 
Dim TStr As String 
TStr = InputBox("請輸入自定義標(biāo)題:", "提示", ThisWorkbook.Sheets(1).Range("A2").Value) 
If Len(TStr) > 0 Then 
 Application.Caption = TStr 
 ThisWorkbook.Sheets(1).Range("A2").Value = TStr 
 ThisWorkbook.Save 
End If 
End Sub 
'重置標(biāo)題 
Sub CaptionReSet() 
 Application.Caption = "Microsoft Excel" 
End Sub 
而修改Excel的圖標(biāo)就要用到API了,一共要用到五個API函數(shù)和一個常數(shù),,下面是它們的聲明: 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long 
Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long 
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long 
Private Const WM_SETICON = &H80 
FindWindow:尋找窗口列表中第一個符合指定條件的頂級窗口 
DrawMenuBar:為指定的窗口重畫菜單 
SetFocus:將輸入焦點設(shè)到指定的窗口 
SendMessage:調(diào)用一個窗口的窗口函數(shù),,將一條消息發(fā)給那個窗口 
ExtractIcon:判斷一個可執(zhí)行文件或DLL中是否有圖標(biāo)存在,并將其提取出來 
這樣說明上面的五個API函數(shù)可能大家無法理解,,但我也只能解釋到此,,API的學(xué)習(xí)我也剛剛開始:( 
下面是修改與重置圖標(biāo)的代碼,如下: 
'設(shè)定圖標(biāo)的函數(shù) 
Function SetIcon(IconPath As String) 
Dim IStyle As Long, hIcon As Long 
 hIcon = ExtractIcon(0, IconPath, 0) '獲得指定文件的第一個圖標(biāo) 
 SendMessage hWndForm, WM_SETICON, True, hIcon '刷新圖標(biāo) 
 SendMessage hWndForm, WM_SETICON, False, hIcon '刷新圖標(biāo) 
 DrawMenuBar hWndForm '重畫菜單 
 SetFocus hWndForm '指定焦點 
End Function 
'獲得Excel句標(biāo)的函數(shù) 
Function hWndForm() As Long 
 hWndForm = FindWindow(vbNullString, Application.Caption) 
End Function 
'設(shè)定圖標(biāo) 
Sub IconSet() 
Dim TStr As String 
TStr = Application.GetOpenFilename("所有圖標(biāo)文件,*.ico;*.exe") 
If TStr <> "False" And Dir(TStr) <> "" Then 
 ThisWorkbook.Sheets(1).Range("A1").Value = TStr 
 SetIcon TStr 
 ThisWorkbook.Save 
End If 
End Sub 
'重置圖標(biāo) 
Sub IconReSet() 
SetIcon Application.Path & "\Excel.exe" 
End Sub 
主要功能代碼就完成了,,我們還可以利用我們前面說過的,,加入菜單調(diào)用(我主頁的加載宏是加在主菜單的視圖項中),這樣就可以完成我們?nèi)康墓δ芰恕?nbsp;
        自定義進(jìn)度條

在Excel的狀態(tài)欄中顯示自定義的進(jìn)度條,。 
'//此模塊創(chuàng)建了一個顯示在狀態(tài)欄的自定義進(jìn)度條,,并可對狀態(tài)欄的文字進(jìn)行設(shè)置 
'//——以下聲明API函數(shù)—— 
'//創(chuàng)建文字函數(shù),其中fCharacterSet:字符集;134為GB2312 
Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal fHeight As Long, ByVal fWidth As Long, ByVal fEscapement As Long, ByVal fOrientation As Long, ByVal fWeight As Long, ByVal fItalic As Long, ByVal fUnderline As Long, ByVal fStrikeout As Long, ByVal fCharacterSet As Long, ByVal fPrecision As Long, ByVal fClipping As Long, ByVal fQuality As Long, ByVal fPitchAndFamily As Long, ByVal fName As String) As Long 
'//取得窗體設(shè)備環(huán)境函數(shù) 
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long 
'//設(shè)置環(huán)境內(nèi)容,,此處為文字 
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long 
'//刪除創(chuàng)建的環(huán)境內(nèi)容 
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long 
'//釋放設(shè)備環(huán)境 
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long 
'//該函數(shù)創(chuàng)建一個具有擴展風(fēng)格的重疊式窗口,、彈出式窗口或子窗口 
Private Declare Function CreateWindowEX Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long 
'//破壞創(chuàng)建的窗口 
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long 
'//設(shè)置一個窗口為另一窗口的子窗口 
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent 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 
'//查找窗口句柄 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
'//查找一個窗口中子窗口的句柄 
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long 
'//設(shè)置場景背景色 
Private Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long 
'//設(shè)置文本顏色 
Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long 
'//取得系統(tǒng)色 
Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long 
'//取得窗體客戶區(qū)坐標(biāo) 
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long 
'//——以下定義常量及類型—— 
Private Const WS_VISIBLE = &H10000000 '可見 
Private Const WS_CHILD = &H40000000 '子窗口 
Private Const WS_BORDER = &H800000 '單邊框 
Private Const PBS_STANDARD = &H0 '標(biāo)準(zhǔn) 
Private Const PBS_SMOOTH = &H1 '平滑 
Private Const CCM_FIRST = &H2000& 
Private Const WM_USER = &H400 
Private Const PBM_SETBKCOLOR = (CCM_FIRST + 1) '設(shè)置進(jìn)度條背景色 
Private Const PBM_SETPOS = (WM_USER + 2) '設(shè)置進(jìn)度條狀態(tài) 
Private Const PBM_SETBARCOLOR = (WM_USER + 9) '設(shè)置進(jìn)度條顏色 
Private Const COLOR_BTNFACE = 15 '系統(tǒng)按紐背景色 
Private Type RECT 
 Left As Long 
 Top As Long 
 Right As Long 
 Bottom As Long 
End Type 
'//進(jìn)度條顯示時的樣式 
Enum PBType 
 P_STANDARD = WS_VISIBLE Or WS_CHILD Or WS_BORDER Or PBS_STANDARD '標(biāo)準(zhǔn)樣式 
 P_SMOOTH = WS_VISIBLE Or WS_CHILD Or WS_BORDER Or PBS_SMOOTH '平滑式 
End Enum 
'// 文字的字體粗細(xì)需在0到1000之間,例如,,400代表普通,,700代表粗體,而0則表示默認(rèn),。 
Enum FnWeight 
 FW_DONTCARE = 0 
 FW_THIN = 100 
 FW_EXTRALIGHT = 200 
 FW_ULTRALIGHT = 200 
 FW_LIGHT = 300 
 FW_NORMAL = 400 
 FW_REGULAR = 400 
 FW_MEDIUM = 500 
 FW_SEMIBOLD = 600 
 FW_DEMIBOLD = 600 
 FW_BOLD = 700 
 FW_EXTRABOLD = 800 
 FW_ULTRABOLD = 800 
 FW_HEAVY = 900 
 FW_BLACK = 900 
End Enum 
'// 主過程 
'//參數(shù)如下,; 
'//FontHeight:文字高度,FontWeight:文字粗細(xì),FontColor:文字顏色,Italic:斜體,lngPBType:進(jìn)度條類型,MaxVlue:最大值,StopValue:停止值,Prompt:狀態(tài)欄字符串。 
Sub StatusBarMsg(FontHeight As Long, FontWeight As FnWeight, FontColor As Long, Italic As Boolean, lngPBType As PBType, MaxVlue As Long, StopValue As Long, Prompt As String) 
       最小化到系統(tǒng)托盤

系統(tǒng)托盤,,即桌面最右下角顯示時間的地方,,現(xiàn)在的很多程序都會在這個地方生成一個圖標(biāo),,而我們這一貼就是要讓Excel最小化后到系統(tǒng)托盤。 
首先,,最小化在這里其實是工作簿最小化,,而不是Excel的主程序,因為這里是用類來監(jiān)控Excel的最小化事件,,而類只能監(jiān)控到工作簿級的事件,,因此利用API禁用了Excel主程序的最小化按鈕,下面是這個類WorkBookClass的代碼,,這里我們只要監(jiān)控工作簿的WindowResize事件: 
Public WithEvents xlbookapp As Excel.Application 
Private Sub xlbookapp_WindowResize(ByVal Wb As Workbook, ByVal Wn As Window) 
 If Wn.WindowState = xlMinimized Then 
 hideHwnd 
 End If 
End Sub 
按下來是加載宏加載時在工作簿的右鍵菜單中加入隱藏這個功能項,,其增加與刪除的代碼如下: 
Sub Menu_Del() 
Dim N, i 
N = Application.CommandBars("Document").Controls.Count 
For i = 1 To N 
 '當(dāng)發(fā)現(xiàn)右鍵菜單中有"隱藏(&H)"項時將其刪除 
 If Application.CommandBars("Document").Controls(i).Caption = "隱藏(&H)" Then 
 Application.CommandBars("Document").Controls(i).Delete 
 Exit Sub 
 '下面這句是重置菜單,但個人認(rèn)為還是用上面的方法比較好 
 'Application.CommandBars("Document").Reset 
 End If 
Next 
End Sub 
Sub Menu_Add() 
Dim N, i, Cmb As CommandBarControl 
N = Application.CommandBars("Document").Controls.Count 
For i = 1 To N 
 If Application.CommandBars("Document").Controls(i).Caption = "隱藏(&H)" Then 
 Exit Sub 
 End If 
Next 
Set Cmb = Application.CommandBars("Document").Controls.Add(Type:=msoControlButton, before:=N) 
With Cmb 
 .BeginGroup = True 
 .Caption = "隱藏(&H)" 
 .OnAction = "hideHwnd" 
 .FaceId = 597 
 .Visible = True 
End With 
End Sub 
再下來就中API的定義,,這里我們一共要用到10個API函數(shù): 
從指定窗口的結(jié)構(gòu)中取得信息,,這里用來獲得Excel主窗口的窗口樣式 
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long 
調(diào)查窗口標(biāo)題文字或控件內(nèi)容的長短 
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long 
取得一個窗體的標(biāo)題(caption)文字 
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long 
控制窗口的可見性 
Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long 
尋找窗口列表中第一個符合指定條件的頂級窗口 
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
在窗口結(jié)構(gòu)中為指定的窗口設(shè)置信息 
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 
判斷一個可執(zhí)行文件或DLL中是否有圖標(biāo)存在,并將其提取出來,,這里用來取得Excel的圖標(biāo) 
Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long 
使用系統(tǒng)托盤的API函數(shù),,這個貼子的主功能的實現(xiàn)函數(shù) 
Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long 

        為指定的窗口重畫菜單

Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long 
判斷窗口是否可見 
Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long 
此外還要定義一個數(shù)據(jù)結(jié)構(gòu)和一些常量: 
Public Type NOTIFYICONDATA 
 cbSize As Long 
 hwnd As Long 
 uID As Long 
 uFlags As Long 
 uCallbackMessage As Long 
 HIcon As Long 
 szTip As String * 64 
End Type 
Public Const WM_LBUTTONUP = &H202 
Public Const GWL_WNDPROC = (-4) 
Public Const WM_USER = &H400 
Public Const WM_NOTIFYICON = WM_USER + &H100 
Public Const WM_SYSCOMMAND = &H112 
Public Const SC_RESTORE = &HF120& 
Public Const NIM_ADD = &H0 
Public Const NIM_DELETE = &H2 
Public Const NIF_MESSAGE = &H1 
Public Const NIF_ICON = &H2 
Public Const NIF_TIP = &H4 
Public Const WM_PAINT = &HF 
Public Const SW_HIDE = 0 
Public Const SW_SHOW = 5 
Public Const GWL_STYLE = (-16) 
Public Const WS_MINIMIZEBOX = &H20000 
之后是全局變量 
Public XlbHide As New WorkBookClass 
Dim myData As NOTIFYICONDATA 
Dim VBEV As Boolean 
Dim App_Cap As String 
Dim XWin As XlWindowState 
Public xlMainHwnd As Long 
Public OldWindowProc As Long 
下面是主程序: 
隱藏時添加圖標(biāo)的代碼: 
Public Sub hideHwnd() 
Dim HIcon 
 HIcon = ExtractIcon(0, Application.Path & "\Excel.exe", 0) 
 With myData 
 .cbSize = Len(myData) 
 .hwnd = xlMainHwnd 
 .uID = 0 
 .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP 
 .uCallbackMessage = WM_NOTIFYICON 
 .HIcon = HIcon 
 .szTip = "Excel" & vbNullChar 
 End With 
 App_Cap = Application.Caption 
 xlMainHwnd = FindWindow(vbNullString, App_Cap) 
 OldWindowProc = SetWindowLong(xlMainHwnd, GWL_WNDPROC, AddressOf NewWindowProc) 
 Shell_NotifyIcon NIM_ADD, myData 
 XWin = ActiveWindow.WindowState 
 Application.Visible = False 
 If GetVBEVisible() Then 
 VBEV = True 
 HideVBE 
 Else 
 VBEV = False 
 End If 
End Sub 
響應(yīng)圖標(biāo)點擊時的代碼 
Public Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
 If msg = WM_NOTIFYICON Then 
 If lParam = WM_LBUTTONUP Then 
 If Application.Visible = False Then 
 If VBEV Then 
 ShowVBE 
 End If 
 Application.Visible = True 
 ActiveWindow.WindowState = xlMaximized 
 Application.Visible = True 
 myData.uFlags = 0 
 Shell_NotifyIcon NIM_DELETE, myData 
 SetWindowLong xlMainHwnd, GWL_WNDPROC, OldWindowProc 
 DrawMenuBar xlMainHwnd 
 If XWin = xlNormal Then 
 ActiveWindow.WindowState = XWin 
 End If 
 Application.Caption = App_Cap 
 Exit Function 
 End If 
 End If 
 End If 
End Function 
顯示VBE窗口的代碼,本來利用Application.VBE.MainWindow.Visible可以顯示和隱藏VBE窗口,,但會受到宏的安全性限制,,因此這里也利用API來完成。 
Sub ShowVBE() 
Dim a As Long 
a = FindWindow(vbNullString, GetVBECaption()) 
ShowWindow a, SW_SHOW 
End Sub 
隱藏VBE窗口代碼: 
Sub HideVBE() 
Dim a As Long 
a = FindWindow(vbNullString, GetVBECaption()) 
ShowWindow a, SW_HIDE 
End Sub 
獲得VBE的標(biāo)題,,同樣可以利用Application.VBE.MainWindow.Caption獲得,,但理由同上 
Function GetVBECaption() As String 
Dim a$, i 
GetVBECaption = "" 
For i = 1 To 10000 
 a$ = GetWindowTitle(i) 
 If a$ Like "Microsoft Visual Basic - *" Then 
 GetVBECaption = a$ 
 Exit Function 
 End If 
Next 
End Function 
判斷VBE窗口的可見壯態(tài) 
Function GetVBEVisible() As Boolean 
Dim a As Long 
If Len(GetVBECaption()) = 0 Then 
 GetVBEVisible = False 
Else 
 a = FindWindow(vbNullString, GetVBECaption()) 
 GetVBEVisible = IsWindowVisible(a) 
End If 
End Function 
獲得所有進(jìn)程的標(biāo)題 
Function GetWindowTitle(ByVal hwnd As Long) As String 
On Error Resume Next 
Dim l As Long, s As String 
l = GetWindowTextLength(hwnd) 
s = Space(l + 1) 
GetWindowText hwnd, s, l + 1 
GetWindowTitle = Left$(s, l) 
End Function 
最后是ThisWorkbook的代碼 
退出時還原最小化按鈕及刪除添加的菜單項 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
 xlMainHwnd = FindWindow(vbNullString, Application.Caption) 
 IStyle = GetWindowLong(xlMainHwnd, GWL_STYLE) Or WS_MINIMIZEBOX 
 SetWindowLong xlMainHwnd, GWL_STYLE, IStyle 
 DrawMenuBar xlMainHwnd 
 Menu_Del 
End Sub 
加載時初始化類、禁用最小化按鈕與添加相應(yīng)的菜單項 
Private Sub Workbook_Open() 
 Set XlbHide.xlbookapp = Application 
 xlMainHwnd = FindWindow(vbNullString, Application.Caption) 
 IStyle = GetWindowLong(xlMainHwnd, GWL_STYLE) And Not WS_MINIMIZEBOX 
 SetWindowLong xlMainHwnd, GWL_STYLE, IStyle 
 DrawMenuBar xlMainHwnd 
 Menu_Add 
End Sub 
        Excel VBA中設(shè)定指針

在excel的VBA中,,找到Cursor 屬性可以設(shè)定指針,,下面是Cursor 屬性在幫助中的說明:  
返回或設(shè)置 Microsoft Excel 中鼠標(biāo)指針的形狀。XlMousePointer 類型,,可讀寫,。 
expression.Cursor 
expression 必需。該表達(dá)式返回“應(yīng)用于”列表中的對象之一,。 
說明 
當(dāng)宏停止運行時,,Cursor 屬性不會自動重設(shè)。在宏停止運行前,,應(yīng)將指針重設(shè)為 xlDefault,。 
示例 
本示例將鼠標(biāo)指針形狀更改為 I 形,稍停片刻,,然后將其重新變?yōu)槟J(rèn)指針形狀,。 
Sub ChangeCursor() 
 Application.Cursor = xlIBeam 
 For x = 1 To 1000 
 For y = 1 to 1000 
 Next y 
 Next x 
 Application.Cursor = xlDefault 
End Sub 

但XlMousePointer只有四種常量, 可為以下 XlMousePointer 常量之一,。  
xlDefault 默認(rèn)指針,。  
xlIBeam I 型指針,。  
xlNorthwestArrow 西北向箭頭指針。  
xlWait 沙漏型指針,。  
      雙擊在Excel中的妙用

       1. 巧分窗口 

  如果仔細(xì)觀察可能會發(fā)現(xiàn),,在Excel垂直滾動條上方與帶黑三角形按鈕相鄰的地方,有一個折疊起來的按鈕,,雙擊(以下雙擊均指雙擊鼠標(biāo)左鍵)它,,即可將當(dāng)前窗口上下一分為二;雙擊水平滾動條右方的折疊起來的按鈕,,可將當(dāng)前窗左右一分為二。 

  2. 調(diào)整列寬 

  單元格內(nèi)的文本或數(shù)字在列寬不夠時,,超出寬度部分不顯示或顯示為#,,這時可將鼠標(biāo)指向此列列標(biāo)右邊界線,待鼠標(biāo)指針變成左右的雙向箭頭時雙擊,,可得到最適合的列寬,,即列寬剛好容納此單元格內(nèi)最長的內(nèi)容,用同樣的辦法可得到最適合的行高,。 

  3. 快速移動 

  利用鼠標(biāo),,可使單元格指針快速移動很長距離。假如在A1∶A30內(nèi)有一連續(xù)數(shù)據(jù),,若要使單元格指針從A1迅速移到A30,,只需用鼠標(biāo)雙擊A1單元格的下邊框,單元格指針則快速向下移動,,直到最后一個不是空白的單元格為止,,若要使單元格指針在連續(xù)數(shù)據(jù)上向右快速移動,則雙擊單元格的右邊框,。 

  4. 填充有規(guī)律數(shù)據(jù) 

  某列的相鄰列(左或右列)已有數(shù)據(jù)或文字,,若要在該列得到有規(guī)律的數(shù)據(jù)或文字,雙擊鼠標(biāo)可快速填充,,方法如下:要得到相同的一列數(shù)據(jù),、文字或需要復(fù)制公式,只需在此列的第一個單元格內(nèi)輸入內(nèi)容,,然后用鼠標(biāo)雙擊這個單元格右下角的填充柄,,即可在此列快速填充,直到空白單元格為止,;若要得到等差數(shù)列,,只需在此列的第一和第二單元格內(nèi)輸入等差數(shù)列的前兩個數(shù)據(jù)并選定它們,用鼠標(biāo)雙擊右下角的填充柄,,即可快速填充,,直到空白單元格為止,。
        Excel模板實用技巧五則

    自定義模板 

  進(jìn)入C:\Documents and Settings\用戶名\Templates文件夾下,在空白處右擊,,選擇“新建”→“Microsoft Excel工作表”新建一個Excel文件,,并把它命名為excel9.xls。雙擊excel9.xls文件,,然后對其中的字體等作一些個性設(shè)置,。

  以后在“資源管理器”中右擊鼠標(biāo),選擇“新建”→“Microsoft Excel工作表”,,再雙擊新建文檔,,你就會發(fā)現(xiàn),它已經(jīng)套用了在excel9.xls中的設(shè)置了,。 從而可以使用自己的個性Excel表格了,。

       默認(rèn)工作表自己改

  一般情況下,選擇“插入”→“工作表”,,會使用默認(rèn)工作表模板在當(dāng)前工作簿中插入新工作表,。不過,可以修改這個默認(rèn)工作表:先建立一個只有一張工作表的工作簿,,并將其保存為名稱Sheet的模板,,接著再把它復(fù)制到C:\Program Files\Microsoft Office\Office10\XLStart文件夾下。以后,,在Excel中新建一個文件時,,將會以此文件作為模板來插入新工作表。

  獲得更多模板資源

  如果覺得Excel中內(nèi)置的模板不能滿足需要,,可從網(wǎng)上下載更多的模板:啟動Excel,,選擇“文件”→“新建”,再在“新建工作簿”任務(wù)窗格,,然后單擊下面的“Microsoft.com上的模板”鏈接,,這樣就能打開微軟網(wǎng)站的中文模板庫。其中提供了很多類別的模板,。只要單擊網(wǎng)頁上的模板類型鏈接,,就能在網(wǎng)頁上看到該類模板的名稱和提供商等內(nèi)容。單擊模板名稱,,并在“模板最終用戶許可協(xié)議”窗口中單擊“同意”按鈕,,同時單擊“在 Microsoft Excel中編輯”,IE會將模板下載回來,,并自動用Excel XP打開模板,。如果對模板效果滿意,再用“另存為”將它保存為模板,就可以像普通模板那樣調(diào)用了,。

  小提示

  另外,,現(xiàn)在網(wǎng)上有很多的Excel模板下載,如http://www./,、http://www./index.html等,。

  模板也來共享

  對局域網(wǎng)中的Windows用戶來說,自定義模板可以讓網(wǎng)絡(luò)上的其他用戶共享,。將自定義模板放入某個共享文件夾中,,并為該共享文件夾建立一個快捷方式。網(wǎng)絡(luò)上的其他用戶可以把這個快捷方式放入自己的C:\Program Files\Microsoft Office\Templates\2052文件夾中,,然后就可以像本地安裝的模板那樣調(diào)用了,。

  讓默認(rèn)工作簿更有個性

  很多用戶反映不能修改默認(rèn)工作簿和工作表模板,其實這是他們沒有掌握修改方法所致,,運行Excel將工作表Sheet1全部選中,,使用“格式” 或“行”菜單下的“行高”修改行高。再次將Sheet1全部選中,,單擊“格式”工具欄中的“格式刷”。單擊工作表標(biāo)簽切換至Sheet2,,用“格式刷”單擊Sheet2左上角(即“1”和“A”交界處),,則Sheet1的格式就會“克隆”到Sheet2。重復(fù)上述操作,,就可以將整個工作簿的格式修改完畢,,然后把它保存名稱為Book的模板,再進(jìn)入C:\Program Files\Microsoft Office\Office10\XLStart文件夾下,,刪除掉名為Book的模板文件(如果有的話),。最后再將前面修改后的Book模板復(fù)制到 XLStart文件夾,則Excel再次啟動時就會使用該模板建立新的默認(rèn)工作簿,。

       創(chuàng)建模板 徹底修改Excel常用默認(rèn)設(shè)置

       在Excel 2003中可以保存的默認(rèn)設(shè)置相當(dāng)少,,只有“工具→選項”中的小部分設(shè)置可以被保存下來,對于最常用的頁眉頁腳,、打印頁邊距,、單元格格式設(shè)置等等就無能為力了。其實修改一下Excel的默認(rèn)模板同樣可以將它們保存為默認(rèn)設(shè)置,,不過和word不一樣的是,,Excel本來并沒有設(shè)置默認(rèn)模板,我們得自己動手幫它建兩個,。

      一,、創(chuàng)建默認(rèn)工作簿模板

      1.打開Excel 2003,把三個工作表分別重命名為:工作表(1),、工作表(2),、工作表(3),。

       2.按住Ctrl鍵逐一單擊工作表標(biāo)簽,選中這三個工作表,,按我們的需要進(jìn)行頁面設(shè)置,、修改“工具→選項”中的項目以及各單元格的格式等等,還可以錄制一些常用的宏,。在此按Ctrl鍵全選是為了對三個工作表做相同設(shè)置,,當(dāng)然你也可以對三個工作表逐一進(jìn)行不同的設(shè)置。

       注意:請不要在表格中隨便輸入文字,,這些內(nèi)容將會直接出現(xiàn)在以后新建的工作簿中,。

       3.點擊“文件→另存為”,在“保存類型”中選擇“模板(*.xlt)”,,輸入模板的文件名為book.xlt,,“保存位置”則選擇“C:\Program Files\Microsoft office\office11\XLStart”。這是默認(rèn)安裝時的位置,,如果你不是按默認(rèn)路徑安裝,,請做相應(yīng)修改。

       現(xiàn)在再重新打開Excel,,你會發(fā)現(xiàn)新建的工作簿已經(jīng)保存了我們在book.xlt中做的全部修改設(shè)置,,當(dāng)然你可以隨時修改book.xlt文件中的設(shè)置來改變默認(rèn)設(shè)置。此外,,在設(shè)置默認(rèn)工作簿后,,“工具→選項”中的“新工作簿內(nèi)的工作表數(shù)”設(shè)置將會失效,你只能通過修改book.xlt中的工作表個數(shù)來改變,。

        二,、創(chuàng)建默認(rèn)工作表模板

       經(jīng)過上面設(shè)置后新建的工作簿確實已保存了我們的設(shè)置,但是當(dāng)我們單擊“插入→工作表”的時候,,新插入的工作表卻還是保持最原始的未設(shè)置狀態(tài),,我們還得再設(shè)置一個默認(rèn)的工作表模板才行。

      新建一個工作簿,,刪除工作表(2),、(3),只保留下工作表(1),。同樣另存為“模板(*.xlt)”類型,,保存在“C:\Program Files\Microsoft office\office11\XLStart”中,不過模板的文件名則改為sheet.xlt,。

       現(xiàn)在再插入工作表,,它的格式設(shè)置就和我們的設(shè)置一樣了。在此如果你在sheet.xlt中保留了兩張工作表,則選擇插入工作表時就會一次插入兩張,,以此類推,。以后如果需要修改插入新工作表的設(shè)置,只要對sheet.xlt進(jìn)行修改并保存就OK了,。

      該方法不僅可以把頁面設(shè)置,、自定義工具欄、宏,、超鏈接和窗體上的 ActiveX 控件等默認(rèn)設(shè)置徹底改變,,甚至連打印區(qū)域設(shè)置、單元格格式設(shè)置,、數(shù)據(jù)有效性設(shè)置,、工作表和行列的隱藏保護乃至工作表中輸入的文字、公式,、圖片,、背景等等都可以直接作為默認(rèn)設(shè)置保存下來。只要用該方法我們完全可以按自己的使用習(xí)慣定制出一套適合自己使用的Excel,。

        注意:自定義的工具欄必須在保存前將它附加到book.xlt模板上才能使用,。右擊工具欄選擇“自定義”,在“工具欄”選項卡中單擊“附加”按鈕,,在“自定義工具欄”列表中選中要附加的工具欄,,單擊“復(fù)制”按鈕即可。

        更改OfficeWord默認(rèn)字體格式

       大家都知道word程序默認(rèn)使用的字體格式大小為“五號”,,這種大小的字體并不適用于所有人的需要。尤其是在1024×768像素以上的高屏幕分辨率狀態(tài)時,,“五號”字體就顯得太小了,,看起來不僅費勁,時間長了還容易引起眼睛疲勞,。雖然我們可以隨時更改“字號”大小來解決這個問題,,但這只是個臨時辦法,因為下次打開word程序時它又恢復(fù)成“五號”字體,。怎樣才能一勞永逸的解決問題呢,?其實方法很簡單。

       打開word程序后,,點擊“格式/字體”選項,,打開“字體”窗口。在“字體”標(biāo)簽頁中可以設(shè)置當(dāng)前文字使用的“字形”,、“字號”等字體格式,,其它還有“字間行距”和“字體效果”等格式設(shè)置。按照自己的需要選擇好合適的字體格式后,點擊下方的“默認(rèn)”按鈕,,彈出提示框點擊“是”按鈕即可(如圖),。這樣就把你選擇的字體格式設(shè)置成當(dāng)前模板默認(rèn)的字體格式了,以后再打開word程序就會發(fā)現(xiàn)默認(rèn)的“五號”字體已經(jīng)更換為自己喜歡的字體大小了,。

         用Excel玩紙牌游戲

         啟動Excel2003程序,,依次點擊工具欄中“工具/自定義”菜單,切換至“命令”標(biāo)簽頁,,選中左側(cè)“類別”欄中的“工具”菜單,,向下拖動右側(cè)“命令”欄側(cè)邊滑塊,找到帶有紙牌圖形的“自定義”選項(如圖),,將它拖至Excel工具欄中,,點擊“關(guān)閉”按鈕將“自定義”對話框關(guān)閉。現(xiàn)在,,Excel工具欄中就多了一個紙牌按鈕,,點擊該按鈕,熟悉的紙牌游戲界面就出現(xiàn)在你面前了,。


隨時都要玩 讓紙牌游戲進(jìn)駐Excel里
自定義紙牌

Excel制表技巧(29)自定義 - 冬日冰點 - 冰點休閑工作室

    友情提示:知道了這個小訣竅,,千萬別按捺不住心中激動,上班開始打撲克呀,。

      Excel 2000中隱藏著一個3D賽車游戲

     1,、開啟Excel之后隨便開一新檔,將它「另存成Web畫面」時,,按下發(fā)布后再將“增加互動功能”打勾,,再將檔案儲存為2000.htm

  2、在IE中開啟2000.htm,,你應(yīng)該會看到電子表格出現(xiàn)在網(wǎng)頁中央,。

  3、找到第2000行,、WC列,。將第2000行整個選取,再利用Tab鍵將第WC列選中

  4,、同時按住Shift+Crtl+Alt然后點選左上方的office LOGO

  5,、開始玩了,呵呵...

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多