- Mar 13 Tue 2012 10:52
試算電腦平台瓦數
- Feb 07 Tue 2012 12:33
線上掃毒
- Nov 17 Thu 2011 10:11
免費線上空間5G
- Nov 17 Thu 2011 10:05
Excel 函數 - 自動抓取欄位輸入最後的內容
- Oct 19 Wed 2011 12:19
AutoCad 2012 陣列視窗
首先必須先安裝AutoCAD 2012 Service Pack 1
安裝好後輸入 ARRAYCLASSIC 指令即可使用以前版本的「陣列」對話方塊
也可以設定工具-自訂-編輯程式參數-把*ARRAY修改成*ARRAYCLASSIC
新 ARRAYCLASSIC 指令和 SNAPGRIDLEGACY 系統變數
此 Service Pack 透過介紹新 ARRAYCLASSIC 指令,帶回「陣列」對話方塊功能。 同時介紹還原舊式鎖點行為的選項,透過新 SNAPGRIDLEGACY 系統變數進行控制:
ARRAYCLASSIC
建立物件複本,並以等距的矩形或環形陣列排列。
SNAPGRIDLEGACY
1 – 永遠將游標鎖點至格線
0 – 僅於 AutoCAD 提示指定一點時將游標鎖點至格線
- Aug 21 Sun 2011 00:12
VB.net 抓取不重複的副檔名
Dim DirInfo As IO.DirectoryInfoDirInfo = New IO.DirectoryInfo("D:\test")For Each file In DirInfo.GetFiles("*.*", IO.SearchOption.TopDirectoryOnly)'設定抓檔案(*.jpg)限定在此資料夾下不包含子資料夾If ListBox1.Items.Contains(Microsoft.VisualBasic.Right(file.Name, Len(file.Name) - InStr(1, file.Name, "."))) = False ThenListBox1.Items.Add(Microsoft.VisualBasic.Right(file.Name, Len(file.Name) - InStr(1, file.Name, ".")))End IfNext file
- Aug 20 Sat 2011 22:14
VBA語句集
http://club.excelhome.net/dispbbs.asp?BoardID=2&ID=170390&replyID=&skin=0
VBA語句集100句(第1輯)我將學習VBA過程中常用的語句進行了歸納,希望能對Excel愛好者和VBA初學者有所幫助.
VBA語句集
(第1輯)
定製模塊行為
(1) Option Explicit '強制對模塊內所有變量進行聲明
Option Private Module '標記模塊為私有,僅對同一工程中其它模塊有用,在宏對話框中不顯示
Option Compare Text '字符串不區分大小寫
Option Base 1 '指定數組的第一個下標為1
(2) On Error Resume Next '忽略錯誤繼續執行VBA代碼,避免出現錯誤消息
(3) On Error GoTo ErrorHandler '當錯誤發生時跳轉到過程中的某個位置
(4) On Error GoTo 0 '恢復正常的錯誤提示
(5) Application.DisplayAlerts=False '在程序執行過程中使出現的警告框不顯示
(6) Application.ScreenUpdating=False '關閉屏幕刷新
Application.ScreenUpdating=True '打開屏幕刷新
(7) Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏運行的功能
工作簿
(8) Workbooks.Add() '創建一個新的工作簿
(9) Workbooks(「book1.xls」).Activate '激活名為book1的工作簿
(10) ThisWorkbook.Save '保存工作簿
(11) ThisWorkbook.close '關閉當前工作簿
(12) ActiveWorkbook.Sheets.Count '獲取活動工作薄中工作表數
(13) ActiveWorkbook.name '返回活動工作薄的名稱
(14) ThisWorkbook.Name 『返回當前工作簿名稱
ThisWorkbook.FullName 『返回當前工作簿路徑和名稱
(15) ActiveWindow.EnableResize=False 『禁止調整活動工作簿的大小
(16) Application.Window.Arrange xlArrangeStyleTiled 『將工作簿以平鋪方式排列
(17) ActiveWorkbook.WindowState=xlMaximized 『將當前工作簿最大化
工作表
(18) ActiveSheet.UsedRange.Rows.Count 『當前工作表中已使用的行數
(19) Rows.Count 『獲取工作表的行數(註:考慮向前兼容性)
(20) Sheets(Sheet1).Name= 「Sum」 '將Sheet1命名為Sum
(21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一個新工作表在第一工作表前
(22) ActiveSheet.Move After:=ActiveWorkbook. _
Sheets(ActiveWorkbook.Sheets.Count) '將當前工作表移至工作表的最後
(23) Worksheets(Array(「sheet1」,」sheet2」)).Select '同時選擇工作表1和工作表2
(24) Sheets(「sheet1」).Delete或 Sheets(1).Delete '刪除工作表1
(25) ActiveWorkbook.Sheets(i).Name '獲取工作表i的名稱
(26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines '切換工作表中的網格線顯示,這種方法也可以用在其它方面進行相互切換,即相當於開關按鈕
(27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings 『切換工作表中的行列邊框顯示
(28) ActiveSheet.UsedRange.FormatConditions.Delete 『刪除當前工作表中所有的條件格式
(29) Cells.Hyperlinks.Delete 『取消當前工作表所有超鏈接
(30) ActiveSheet.PageSetup.Orientation=xlLandscape
或ActiveSheet.PageSetup.Orientation=2 '將頁面設置更改為橫向
(31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName 『在頁面設置的表尾中輸入文件路徑
ActiveSheet.PageSetup.LeftFooter=Application.UserName 『將用戶名放置在活動工作表的頁腳
單元格/單元格區域
(32) ActiveCell.CurrentRegion.Select
或Range(ActiveCell.End(xlUp),ActiveCell.End(xlDown)).Select
'選擇當前活動單元格所包含的範圍,上下左右無空行
(33) Cells.Select 『選定當前工作表的所有單元格
(34) Range(「A1」).ClearContents '清除活動工作表上單元格A1中的內容
Selection.ClearContents '清除選定區域內容
Range(「A1:D4」).Clear '徹底清除A1至D4單元格區域的內容,包括格式
(35) Cells.Clear '清除工作表中所有單元格的內容
(36) ActiveCell.Offset(1,0).Select '活動單元格下移一行,同理,可下移一列
(37) Range(「A1」).Offset(ColumnOffset:=1)或Range(「A1」).Offset(,1) 『偏移一列
Range(「A1」).Offset(Rowoffset:=-1)或Range(「A1」).Offset(-1) 『向上偏移一行
(38) Range(「A1」).Copy Range(「B1」) '複製單元格A1,粘貼到單元格B1中
Range(「A1:D8」).Copy Range(「F1」) '將單元格區域複製到單元格F1開始的區域中
Range(「A1:D8」).Cut Range(「F1」) '剪切單元格區域A1至D8,複製到單元格F1開始的區域中
Range(「A1」).CurrentRegion.Copy Sheets(「Sheet2」).Range(「A1」) '複製包含A1的單元格區域到工作表2中以A1起始的單元格區域中
註:CurrentRegion屬性等價於定位命令,由一個矩形單元格塊組成,周圍是一個或多個空行或列
(39) ActiveWindow.RangeSelection.Value=XX '將值XX輸入到所選單元格區域中
(40) ActiveWindow.RangeSelection.Count '活動窗口中選擇的單元格數
(41) Selection.Count '當前選中區域的單元格數
(42) GetAddress=Replace(Hyperlinkcell.Hyperlinks(1).Address,mailto:,」」) 『返回單元格中超級鏈接的地址並賦值
(43) TextColor=Range(「A1」).Font.ColorIndex 『檢查單元格A1的文本顏色並返回顏色索引
Range(「A1」).Interior.ColorIndex 『獲取單元格A1背景色
(44) cells.count 『返回當前工作表的單元格數
(45) Selection.Range(「E4」).Select 『激活當前活動單元格下方3行,向右4列的單元格
(46) Cells.Item(5,」C」) 『引單元格C5
Cells.Item(5,3) 『引單元格C5
(47) Range(「A1」).Offset(RowOffset:=4,ColumnOffset:=5)
或 Range(「A1」).Offset(4,5) 『指定單元格F5
(48) Range(「B3」).Resize(RowSize:=11,ColumnSize:=3)
Rnage(「B3」).Resize(11,3) 『創建B3:D13區域
(49) Range(「Data」).Resize(,2) 『將Data區域擴充2列
(50) Union(Range(「Data1」),Range(「Data2」)) 『將Data1和Data2區域連接
(51) Intersect(Range(「Data1」),Range(「Data2」)) 『返回Data1和Data2區域的交叉區域
(52) Range(「Data」).Count 『單元格區域Data中的單元格數
Range(「Data」). Columns.Count 『單元格區域Data中的列數
Range(「Data」). Rows.Count 『單元格區域Data中的行數
(53) Selection.Columns.Count 『當前選中的單元格區域中的列數
Selection.Rows.Count 『當前選中的單元格區域中的行數
(54) Selection.Areas.Count 『選中的單元格區域所包含的區域數
(55) ActiveSheet.UsedRange.Row 『獲取單元格區域中使用的第一行的行號
(56) Rng.Column 『獲取單元格區域Rng左上角單元格所在列編號
(57) ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions) 『在活動工作表中返回所有符合條件格式設置的區域
(58) Range(「A1」).AutoFilter Field:=3,VisibleDropDown:=False 『關閉由於執行自動篩選命令產生的第3個字段的下拉列表
名稱
(59) Range(「A1:C3」).Name=「computer」 『命名A1:C3區域為computer
或Range(「D1:E6」).Name=「Sheet1!book」 『命名局部變量,即Sheet1上區域D1:E6為book
或 Names(「computer」).Name=「robot」 『將區域computer重命名為robot
(60) Names(「book」).Delete 『刪除名稱
(61) Names.Add Name:=「ContentList」,_
RefersTo:=「=OFFSET(Sheet1!A2,0,0,COUNTA(Sheet2!$A:$A))」 『動態命名列
(62) Names.Add Name:=「Company」,RefersTo:=「CompanyCar」 『命名字符串CompanyCar
(63) Names.Add Name:=「Total」,RefersTo:=123456 『將數字123456命名為Total。注意數字不能加引號,否則就是命名字符串了。
(64) Names.Add Name:=「MyArray」,RefersTo:=ArrayNum 『將數組ArrayNum命名為MyArray。
(65) Names.Add Name:=「ProduceNum」,RefersTo:=「=$B$1」,Visible:=False 『將名稱隱藏
(66) ActiveWorkbook.Names(「Com」).Name 『返回名稱字符串
公式與函數
(67) Application.WorksheetFunction.IsNumber(「A1」) '使用工作表函數檢查A1單元格中的數據是否為數字
(68) Range(「A:A」).Find(Application.WorksheetFunction.Max(Range(「A:A」))).Activate
'激活單元格區域A列中最大值的單元格
(69) Cells(8,8).FormulaArray=「=SUM(R2C[-1]:R[-1]C[-1]*R2C:R[-1]C)」 『在單元格中輸入數組公式。注意必須使用R1C1樣式的表達式
圖表
(70) ActiveSheet.ChartObjects.Count '獲取當前工作表中圖表的個數
(71) ActiveSheet.ChartObjects(「Chart1」).Select 『選中當前工作表中圖表Chart1
(72) ActiveSheet.ChartObjects(「Chart1」).Activate
ActiveChart.ChartArea.Select 『選中當前圖表區域
(73) WorkSheets(「Sheet1」).ChartObjects(「Chart2」).Chart. _
ChartArea.Interior.ColorIndex=2 『更改工作表中圖表的圖表區的顏色
(74) Sheets(「Chart2」).ChartArea.Interior.ColorIndex=2 『更改圖表工作表中圖表區的顏色
(75) Charts.Add 『添加新的圖表工作表
(76) ActiveChart.SetSourceData Source:=Sheets(「Sheet1」).Range(「A1:D5」), _
PlotBy:=xlColumns 『指定圖表數據源並按列排列
(77) ActiveChart.Location Where:=xlLocationAsNewSheet 『新圖表作為新圖表工作表
(78) ActiveChart.PlotArea.Interior.ColorIndex=xlNone 『將繪圖區顏色變為白色
(79) WorkSheets(「Sheet1」).ChartObjects(1).Chart. _
Export FileName:=「C:MyChart.gif」,FilterName:=「GIF」 『將圖表1導出到C盤上並命名為MyChart.gif
窗體
(80) MsgBox 「Hello!」 '消息框中顯示消息Hello
(81) Ans=MsgBox(「Continue?」,vbYesNo) '在消息框中點擊「是」按鈕,則Ans值為vbYes;點擊「否」按鈕,則Ans值為vbNo。
If MsgBox(「Continue?」,vbYesNo)<>vbYes Then Exit Sub '返回值不為「是」,則退出
(82) Config=vbYesNo+vbQuestion+vbDefaultButton2 '使用常量的組合,賦值組Config變量,並設置第二個按鈕為缺省按鈕
(83) MsgBox 「This is the first line.」 & vbNewLine & 「Second line.」 '在消息框中強制換行,可用vbCrLf代替vbNewLine。
(84) MsgBox "the average is :"&Format(Application.WorksheetFunction.Average(Selection),"#,##0.00"),vbInformation, "selection count average" & Chr(13) '應用工作表函數返回所選區域的平均值並按指定格式顯示
(85) Userform1.Show 『顯示用戶窗體
(86) Load Userform1 『加載一個用戶窗體,但該窗體處於隱藏狀態
(87) Userform1.Hide 『隱藏用戶窗體
(88) Unload Userform1 或 Unload Me 『卸載用戶窗體
(89) (圖像控件).Picture=LoadPicture(「圖像路徑」) 『在用戶窗體中顯示圖形
(90) UserForm1.Show 0 或 UserForm1.Show vbModeless 『將窗體設置為無模式狀態
(91) Me.Height=Int(0.88*ActiveWindow.Height) 『窗體高度為當前活動窗口高度的0.88
Me.Width=Int(0.88*ActiveWindow.Width) 『窗體寬度為當前活動窗口高度的0.88
事件
(92) Application.EnableEvents=False '禁用所有事件
Application.EnableEvents=True '啟用所有事件
註:不適用於用戶窗體控件觸發的事件
對象
(93) Set ExcelSheet = CreateObject("Excel.Sheet") 『創建一個Excel工作表對象
ExcelSheet.Application.Visible = True '設置 Application 對象使 Excel 可見
ExcelSheet.Application.Cells(1, 1).Value = "Data" '在表格的第一個單元中輸入文本
ExcelSheet.SaveAs "C:\TEST.XLS" '將該表格保存到C:\test.xls 目錄
ExcelSheet.Application.Quit '關閉 Excel
Set ExcelSheet = Nothing '釋放該對象變量
(94) 『聲明並創建一個Excel對象引用
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.WorkSheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
(95) 『創建並傳遞一個 Excel.Application 對象的引用
Call MySub (CreateObject("Excel.Application"))
(96) Set d = CreateObject(Scripting.Dictionary) 『創建一個 Dictionary 對象變量
(97) d.Add "a", "Athens" '為對象變量添加關鍵字和條目
其他
(98) Application.OnKey 「^I」,」macro」 '設置Ctrl+I鍵為macro過程的快捷鍵
(99) Application.CutCopyMode=False 『退出剪切/複製模式
(100) Application.Volatile True '無論何時工作表中任意單元格重新計算,都會強制計算該函數
Application.Volatile False '只有在該函數的一個或多個參數發生改變時,才會重新計算該函數
By fanjy in 2006-6-4
http://fanjy.blog.excelhome.net/user1/fanjy/archives/2006/477.html
user1/fanjy/archives/2006/493.html
VBA語句集100句(第2輯)
VBA語句集
(第2輯)
*******************************************************
定製模塊行為
(101) Err.Clear 『清除程序運行過程中所有的錯誤
*******************************************************
工作簿
(102) ThisWorkbook.BuiltinDocumentProperties(「Last Save Time」)
或Application.Caller.Parent.Parent.BuiltinDocumentProperties(「Last Save Time」) 『返回上次保存工作簿的日期和時間
(103) ThisWorkbook.BuiltinDocumentProperties("Last Print Date")
或Application.Caller.Parent.Parent.BuiltinDocumentProperties(「Last Print Date」) 『返回上次打印或預覽工作簿的日期和時間
(104) Workbooks.Close 『關閉所有打開的工作簿
(105) ActiveWorkbook.LinkSources(xlExcelLinks)(1) 『返回當前工作簿中的第一條鏈接
(106) ActiveWorkbook.CodeName
ThisWorkbook.CodeName 『返回工作簿代碼的名稱
(107) ActiveWorkbook.FileFormat
ThisWorkbook.FileFormat 『返回當前工作簿文件格式代碼
(108) ThisWorkbook.Path
ActiveWorkbook.Path 『返回當前工作簿的路徑(注:若工作簿未保存,則為空)
(109) ThisWorkbook.ReadOnly
ActiveWorkbook.ReadOnly 『返回當前工作簿的讀/寫值(為False)
(110) ThisWorkbook.Saved
ActiveWorkbook.Saved 『返回工作簿的存儲值(若已保存則為False)
(111) Application.Visible = False 『隱藏工作簿
Application.Visible = True 『顯示工作簿
注:可與用戶窗體配合使用,即在打開工作簿時將工作簿隱藏,只顯示用戶窗體.可設置控制按鈕控制工作簿可見
*******************************************************
工作表
(112) ActiveSheet.Columns("B").Insert 『在A列右側插入列,即插入B列
ActiveSheet.Columns("E").Cut
ActiveSheet.Columns("B").Insert 『以上兩句將E列數據移至B列,原B列及以後的數據相應後移
ActiveSheet.Columns("B").Cut
ActiveSheet.Columns("E").Insert 『以上兩句將B列數據移至D列,原C列和D列數據相應左移一列
(113) ActiveSheet.Calculate 『計算當前工作表
(114) ThisWorkbook.Worksheets(「sheet1」).Visible=xlSheetHidden 『正常隱藏工作表,同在Excel菜單中選擇「格式——工作表——隱藏」操作一樣
ThisWorkbook.Worksheets(「sheet1」).Visible=xlSheetVeryHidden 『隱藏工作表,不能通過在Excel菜單中選擇「格式——工作表——取消隱藏」來重新顯示工作表
ThisWorkbook.Worksheets(「sheet1」).Visible=xlSheetVisible 『顯示被隱藏的工作表
(115) ThisWorkbook.Sheets(1).ProtectContents 『檢查工作表是否受到保護
(116) ThisWorkbook.Worksheets.Add Count:=2, _
Before:=ThisWorkbook.Worksheets(2)
或 ThisWorkbook.Workshees.Add ThisWorkbook.Worksheets(2), , 2 『在第二個工作表之前添加兩個新的工作表
(117) ThisWorkbook.Worksheets(3).Copy 『複製一個工作表到新的工作簿
(118) ThisWorkbook.Worksheets(3).Copy ThisWorkbook.Worksheets(2) 『複製第三個工作表到第二個工作表之前
(119) ThisWorkbook.ActiveSheet.Columns.ColumnWidth = 20 『改變工作表的列寬為20
ThisWorkbook.ActiveSheet.Columns.ColumnWidth = _
ThisWorkbook.ActiveSheet.StandardWidth 『將工作表的列寬恢復為標準值
ThisWorkbook.ActiveSheet.Columns(1).ColumnWidth = 20 『改變工作表列1的寬度為20
(120) ThisWorkbook.ActiveSheet.Rows.RowHeight = 10 『改變工作表的行高為10
ThisWorkbook.ActiveSheet.Rows.RowHeight = _
ThisWorkbook.ActiveSheet.StandardHeight 『將工作表的行高恢復為標準值
ThisWorkbook.ActiveSheet.Rows(1).RowHeight = 10 『改變工作表的行1的高度值設置為10
(121) ThisWorkbook.Worksheets(1).Activate 『當前工作簿中的第一個工作表被激活
(122) ThisWorkbook.Worksheets("Sheet1").Rows(1).Font.Bold = True 『設置工作表Sheet1中的行1數據為粗體
(123) ThisWorkbook.Worksheets("Sheet1").Rows(1).Hidden = True 『將工作表Sheet1中的行1隱藏
ActiveCell.EntireRow.Hidden = True 『將當前工作表中活動單元格所在的行隱藏
註:同樣可用於列。
(124) ActiveSheet.Range(「A:A」).EntireColumn.AutoFit 『自動調整當前工作表A列列寬
(125) ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlTextValues) 『選中當前工作表中常量和文本單元格
ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlErrors+xlTextValues) 『選中當前工作表中常量和文本及錯誤值單元格
*******************************************************
公式與函數
(126) Application.MacroOptions Macro:=」SumPro」,Category:=4 『將自定義的SumPro函數指定給Excel中的「統計函數」類別
(127) Application.MacroOptions Macro:=」SumPro」, _
Description:=」First Sum,then Product」 『為自定義函數SumPro進行了功能說明
(128) Application.WorksheetFunction.CountA(Range(「A:A」))+1 『獲取A列的下一個空單元格
(129) WorksheetFunction.CountA(Cell.EntireColumn) 『返回該單元格所在列非空單元格的數量
WorksheetFunction.CountA(Cell.EntireRow) 『返回該單元格所在行非空單元格的數量
(130) WorksheetFunction.CountA(Cells) 『返回工作表中非空單元格數量
(131) ActiveSheet.Range(「A20:D20」).Formula=「=Sum(R[-19]C:R[-1]C」』對A列至D列前19個數值求和
*******************************************************
圖表
(132) ActiveWindow.Visible=False
或 ActiveChart.Deselect 『使圖表處於非活動狀態
(133) TypeName(Selection)=」Chart」 『若選中的為圖表,則該語句為真,否則為假
(134) ActiveSheet.ChartObjects.Delete 『刪除工作表上所有的ChartObject對象
ActiveWorkbook.Charts.Delete 『刪除當前工作簿中所有的圖表工作表
*******************************************************
窗體和控件
(135) UserForms.Add(MyForm).Show 『添加用戶窗體MyForm並顯示
(136)TextName.SetFocus 『設置文本框獲取輸入焦點
(137) SpinButton1.Value=0 『將數值調節鈕控件的值改為0
(138) TextBox1.Text=SpinButton1.Value 『將數值調節鈕控件的值賦值給文本框控件
SpinButton1.value="/Val(TextBox1.Text)" 『將文本框控件值賦給數值調節鈕控件
CStr(SpinButton1.Value)=TextBox1.Text 『數值調節鈕控件和文本框控件相比較
(139) UserForm1.Controls.Count 『顯示窗體UserForm1上的控件數目
(140) ListBox1.AddItem 「Command1」 『在列表框中添加Command1
(141) ListBox1.ListIndex 『返回列表框中條目的值,若為-1,則表明未選中任何列表框中的條目
(142) RefEdit1.Text 『返回代表單元格區域地址的文本字符串
RefEdit1.Text=ActiveWindow.RangeSelection.Address 『初始化RefEdit控件顯示當前所選單元格區域
Set FirstCell=Range(RefEdit1.Text).Range(「A1」) 『設置某單元格區域左上角單元格
(143) Application.OnTime Now + TimeValue("00:00:15"), "myProcedure" 『等待15秒後運行myProcedure過程
(144) ActiveWindow.ScrollColumn=ScrollBarColumns.Value 『將滾動條控件的值賦值給ActiveWindow對象的ScrollColumn屬性
ActiveWindow.ScrollRow=ScrollBarRows.Value 『將滾動條控件的值賦值給ActiveWindow對象的ScrollRow屬性
(145) UserForm1.ListBox1.AddItem Sheets(「Sheet1」).Cells(1,1) 『將單元格A1中的數據添加到列表框中
ListBox1.List=Product 『將一個名為Product數組的值添加到ListBox1中
ListBox1.RowSource=」Sheet2!SumP」 『使用工作表Sheet2中的SumP區域的值填充列表框
(146) ListBox1.Selected(0) 『選中列表框中的第一個條目(註:當列表框允許一次選中多個條目時,必須使用Selected屬性)
(147) ListBox1.RemoveItem ListBox1.ListIndex 『移除列表框中選中的條目
*******************************************************
對象
Application對象
(148) Application.UserName 『返回應用程序的用戶名
(149) Application.Caller 『返回代表調用函數的單元格
(150) Application.Caller.Parent.Parent 『返回調用函數的工作簿名稱
(151) Application.StatusBar=」請等待……」 『將文本寫到狀態欄
Application.StatusBar=」請等待……」 & Percent & 「% Completed」 『更新狀態欄文本,以變量Percent代表完成的百分比
Application.StatusBar=False 『將狀態欄重新設置成正常狀態
(152) Application.Goto Reference:=Range(「A1:D4」) 『指定單元格區域A1至D4,等同於選擇「編輯——定位」,指定單元格區域為A1至D4,不會出現「定位」對話框
(153) Application.Dialogs(xlDialogFormulaGoto).Show 『顯示「定位」對話框,但定位條件按鈕無效
(154) Application.Dialogs(xlDialogSelectSpecial).Show 『顯示「定位條件」對話框
(155) Application.Dialogs(xlDialogFormatNumber).show 『顯示「單元格格式」中的「數字」選項卡
Application.Dialogs(xlDialogAlignment).show 『顯示「單元格格式」中的「對齊」選項卡
Application.Dialogs(xlDialogFontProperties).show 『顯示「單元格格式」中的「字體」選項卡
Application.Dialogs(xlDialogBorder).show 『顯示「單元格格式」中的「邊框」選項卡
Application.Dialogs(xlDialogPatterns).show 『顯示「單元格格式」中的「圖案」選項卡
Application.Dialogs(xlDialogCellProtection).show 『顯示「單元格格式」中的「保護」選項卡
註:無法一次顯示帶選項卡的「單元格格式」對話框,只能一次顯示一個選項卡。
(156) Application.Dialogs(xlDialogFormulaGoto).show Range("b2"), True 『顯示「引用位置」的默認單元格區域並顯示引用使其出現在窗口左上角(註:內置對話框參數的使用)
(157) Application.CommandBars(1).Controls(2).Controls(16).Execute 『執行「定位」話框,相當於選擇菜單「編輯——定位」命令
(158) Application.Transpose(Array(「Sun」,」Mon」,」Tur」,」Wed」,」Thu」,」Fri」,」Sat」)) 『返回一個垂直的數組
(159) Application.Version 『返回使用的Excel版本號
(160) Application.Cursor = xlNorthwestArrow 『設置光標形狀為北西向箭頭
Application.Cursor = xlIBeam 『設置光標形狀為Ⅰ字形
Application.Cursor = xlWait 『設置光標形狀為沙漏(等待)形
Application.Cursor = xlDefault 『恢復光標的默認設置
(161) Application.WindowState 『返回窗口當前的狀態
Application.WindowState = xlMinimized 『窗口最小化
Application.WindowState = xlMaximized 『窗口最大化
Application.WindowState = xlNormal 『窗口正常狀態
(162) Application.UsableHeight 『獲取當前窗口的高度
Application.UsableWidth 『獲取當前窗口的寬度
(163) Application.ActiveCell.Address 『返回活動單元格的地址(注:返回的是絕對地址)
(164) Application.ActivePrinter 『返回當前打印機的名稱
(165) Application.ActiveSheet.Name 『返回活動工作表的名稱
(166) Application.ActiveWindow.Caption 『返回活動窗口的標題
(167) Application.ActiveWorkbook.Name 『返回活動工作簿的名稱
(168) Application.Selection.Address 『返回所選區域的地址
(169) Application.ThisWorkbook.Name 『返回當前工作簿的名稱
(170) Application.CalculationVersion 『返回Excel計算引擎版本(右邊四位數字)及Excel版本(左邊兩位數字)
(171) Application.MemoryFree 『以字節為單位返回Excel允許使用的內存數(不包括已經使用的內存)
(172) Application.MemoryUsed 『以字節為單位返回Excel當前使用的內存數
(173) Application.MemoryTotal 『以字節為單位返回Excel可以使用的內存數(包括已使用的內存,是MemoryFree和MemoryUsed的總和)
(174) Application.OperatingSystem 『返回所使用的操作系統的名稱和版本
(175) Application.OrganizationName 『返回Excel產品登記使用的組織機構的名稱
(176) Application.FindFormat 『查找的格式種類
Application.ReplaceFormat 『替換查找到的內容的格式種類
ActiveSheet.Cells.Replace What:=」 「, _
Replacement:=」 「,SearchFormat:=True,ReplaceFormat:=True 『替換查找到的格式
(177) Application.Interactive=False 『忽略鍵盤或鼠標的輸入
(178) Application.Evaluate("Rate") 『若在工作表中定義了常量0.06的名稱為」Rate」,則本語句將返回值0.06
(179) Application.OnUndo 「Undo Option」,「Undo Procedure」 『選擇UndoOption後,將執行Undo Procedure過程
*******************************************************
Range對象
(180) Range(A1:A10).value="/Application.WorksheetFunction.Transpose(MyArray)" 『將一個含有10個元素的數組轉置成垂直方向的工作表單元格區域(A1至A10)
註:因為當把一維數組的內容傳遞給某個單元格區域時,該單元格區域中的單元格必須是水平方向的,即含有多列的一行。若必須使用垂直方向的單元格區域,則必須先將數組進行轉置,成為垂直的。
(181) Range(「A65536」).End(xlUp).Row+1 『返回A列最後一行的下一行
(182) rng.Range(「A1」) 『返回區域左上角的單元格
(183) cell.Parent.Parent.Worksheets 『訪問當前單元格所在的工作簿
(184) Selection.Font.Bold=Not Selection.Font.Bold 『切換所選單元格是否加粗
(185) ActiveSheet.Range("A:B").Sort Key1:=Columns("B"), Key2:=Columns("A"), _
Header:=xlYes 『兩個關鍵字排序,相鄰兩列,B列為主關鍵字,A列為次關鍵字,升序排列
(186) cell.Range(「A1」).NumberFormat 『顯示單元格或單元格區域中的第一個單元格的數字格式
(187) cell.Range(「A1」).HasFormula 『檢查單元格或單元格區域中的第一個單元格是否含有公式
或cell.HasFormula 『工作表中單元格是否含有公式
(188) Cell.EntireColumn 『單元格所在的整列
Cell.EntireRow 『單元格所在的整行
(189) rng.Name.Name 『顯示rng區域的名稱
(190) rng.Address 『返回rng區域的地址
(191) cell.Range(「A1」).Formula 『返回包含在rng區域中左上角單元格中的公式。
註:若在一個由多個單元格組成的範圍內使用Formula屬性,會得到錯誤;若單元格中沒有公式,會得到一個字符串,在公式欄中顯示該單元格的值。
(192) Range(「D5:D10」).Cells(1,1) 『返回單元格區域D5:D10中左上角單元格
(193) ActiveCell.Row 『活動單元格所在的行數
ActiveCell.Column 『活動單元格所在的列數
(194) Range("A1:B1").HorizontalAlignment = xlLeft 『當前工作表中的單元格區域數據設置為左對齊
(195) ActiveSheet.Range(「A2:A10」).NumberFormat=」#,##0」 『設置單元格區域A2至A10中數值格式
(196) rng.Replace 「 「,」0」 『用0替換單元格區域中的空單元格
*******************************************************
Collection與object
(197) Dim colMySheets As New Collection
Public colMySheets As New Collection 『聲明新的集合變量
(198) Set MyRange=Range(「A1:A5」) 『創建一個名為MyRange的對象變量
(199) <object>.Add Cell.Value CStr(Cell.Value) 『向集合中添加惟一的條目(即將重複的條目忽略)
*******************************************************
Windows API
(200) Declare Function GetWindowsDirectoryA Lib 「kernel32」 _
(ByVal lpBuffer As String,ByVal nSize As Long) As Long 『API函數聲明。返回安裝Windows所在的目錄名稱,調用該函數後,安裝Windows的目錄名稱將在第一個參數lpBuffer中,該目錄名稱的字符串長度包含在第二個參數nSize中
- Aug 15 Mon 2011 00:09
Excel VBA 範例參考
[範例01] 傳值給某單元格
[範例01-01]
Sub test1()
Worksheets("Sheet1").Range("A5").Value = 22
MsgBox "工作表Sheet1內單元格A5中的值為" _
& Worksheets("Sheet1").Range("A5").Value
End Sub
[範例01-02]
Sub test2()
Worksheets("Sheet1").Range("A1").Value = _
Worksheets("Sheet1").Range("A5").Value
MsgBox "現在A1單元格中的值也為" & _
Worksheets("Sheet1").Range("A5").Value
End Sub
[範例01-03]
Sub test3()
MsgBox "用公式填滿單元格,本例為隨機數公式"
Range("A1:H8").Formula = "=Rand()"
End Sub
[範例01-04]
Sub test4()
Worksheets(1).Cells(1, 1).Value = 24
MsgBox "現在單元格A1的值為24"
End Sub
[範例01-05]
Sub test5()
MsgBox "給單元格設置公式,求B2至B5單元格區域之和"
ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"
End Sub
[範例01-06]
Sub test6()
MsgBox "設置單元格C5中的公式."
Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例02] 引用單元格
Sub Random()
Dim myRange As Range
'設置對單元格區域的引用
Set myRange = Worksheets("Sheet1").Range("A1:D5")
'對Range對象進行操作
myRange.Formula = "=RAND()"
myRange.Font.Bold = True
End Sub
範例說明:可以設置Range對象變量來引用單元格區域,然後對該變量所代表的單元格區域進行操作。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例03] 清除單元格
[範例03-01]清除單元格中的內容(ClearContents方法)
Sub testClearContents()
MsgBox "清除指定單元格區域中的內容"
Worksheets(1).Range("A1:H8").ClearContents
End Sub
[範例03-02]清除單元格中的格式(ClearFormats方法)
Sub testClearFormats()
MsgBox "清除指定單元格區域中的格式"
Worksheets(1).Range("A1:H8").ClearFormats
End Sub
[範例03-03]清除單元格中的批註(ClearComments方法)
Sub testClearComments()
MsgBox "清除指定單元格區域中的批註"
Worksheets(1).Range("A1:H8").ClearComments
End Sub
[範例03-04]清除單元格中的全部,包括內容、格式和批註(Clear方法)
Sub testClear()
MsgBox "徹底清除指定單元格區域"
Worksheets(1).Range("A1:H8").Clear
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例04] Range和Cells
Sub test()
'設置單元格區域A1:J10的邊框線條樣式
With Worksheets(1)
.Range(.Cells(1, 1), _
.Cells(10, 10)).Borders.LineStyle = xlThick
End With
End Sub
範例說明:可用 Range(cell1, cell2) 返回一個 Range 對象,其中cell1和cell2為指定起始和終止位置的Range對象。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例05] 選取單元格區域(Select方法)
Sub testSelect()
'選取單元格區域A1:D5
Worksheets("Sheet1").Range("A1:D5").Select
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例06] 基於所選區域偏離至另一區域(Offset屬性)
[範例06-01]
Sub testOffset()
Worksheets("Sheet1").Activate
Selection.Offset(3, 1).Select
End Sub
範例說明:可用Offset(row, column)(其中row和column為行偏移量和列偏移量)返回相對於另一區域在指定偏移量處的區域。如上例選定位於當前選定區域左上角單元格的向下三行且向右一列處單元格區域。
[範例06-02] 選取距當前單元格指定行數和列數的單元格
Sub ActiveCellOffice()
MsgBox "顯示距當前單元格第3列、第2行的單元格中的值"
MsgBox ActiveCell.Offset(3, 2).Value
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例07] 調整區域的大小(Resize屬性)
Sub ResizeRange()
Dim numRows As Integer, numcolumns As Integer
Worksheets("Sheet1").Activate
numRows = Selection.Rows.Count
numcolumns = Selection.Columns.Count
Selection.Resize(numRows + 1, numcolumns + 1).Select
End Sub
範例說明:本範例調整所選區域的大小,使之增加一行一列。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例08] 選取多個區域(Union方法)
Sub testUnion()
Dim rng1 As Range, rng2 As Range, myMultiAreaRange As Range
Worksheets("sheet1").Activate
Set rng1 = Range("A1:B2")
Set rng2 = Range("C3:D4")
Set myMultiAreaRange = Union(rng1, rng2)
myMultiAreaRange.Select
End Sub
範例說明:可用 Union(range1, range2, ...) 返回多塊區域,即該區域由兩個或多個連續的單元格區域所組成。如上例創建由單元格區域A1:B2和C3:D4組合定義的對象,然後選定該定義區域。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例09] 啟動已選區域中的單元格
Sub ActivateRange()
MsgBox "選取單元格區域B2:D6並將C4選中"
ActiveSheet.Range("B3:D6").Select
Range("C5").Activate
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例10] 選取指定條件的單元格(SpecialCells方法)
Sub SelectSpecialCells()
MsgBox "選擇當前工作表中所有公式單元格"
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Select
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例11] 選取矩形區域(CurrentRegion屬性)
'選取包含當前單元格的矩形區域
'該區域周邊為空白行和空白列
Sub SelectCurrentRegion()
MsgBox "選取包含當前單元格的矩形區域"
ActiveCell.CurrentRegion.Select
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例12] 選取當前工作表中已用單元格(UsedRange屬性)
'選取當前工作表中已使用的單元格區域
Sub SelectUsedRange()
MsgBox "選取當前工作表中已使用的單元格區域" _
& vbCrLf & "並顯示其地址"
ActiveSheet.UsedRange.Select
MsgBox ActiveSheet.UsedRange.Address
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例13] 選取最邊緣單元格(End屬性)
'選取最下方的單元格
Sub SelectEndCell()
MsgBox "選取當前單元格區域內最下方的單元格"
ActiveCell.End(xlDown).Select
End Sub
範例說明:可以改變參數xlDown以選取最左邊、最右邊、最上方的單元格。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例14]設置當前單元格的前一個單元格和後一個單元格的值
Sub SetCellValue()
MsgBox "將當前單元格中前面的單元格值設為""我前面的單元格""" & vbCrLf _
& "後面的單元格值設為""我後面的單元格"""
ActiveCell.Previous.Value = "我前面的單元格"
ActiveCell.Next.Value = "我後面的單元格"
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例15]確認所選單元格區域中是否有公式(HasFormula屬性)
Sub IfHasFormula()
If Selection.HasFormula = True Then
MsgBox "所選單元格中都有公式"
Else
MsgBox "所選單元格中,部分單元格沒有公式"
End If
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例16] 公式單元格操作
[範例16-01]獲取與運算結果單元格有直接關係的單元格
Sub CalRelationCell()
MsgBox "選取與當前單元格的計算結果相關的單元格"
ActiveCell.DirectPrecedents.Select
End Sub
[範例16-02]追蹤公式單元格
Sub Cal1()
MsgBox "選取計算結果單元格相關的所有單元格"
ActiveCell.Precedents.Select
End Sub
Sub TrackCell()
MsgBox "追蹤運算結果單元格"
ActiveCell.ShowPrecedents
End Sub
Sub DelTrack()
MsgBox "刪除追蹤線"
ActiveCell.ShowPrecedents Remove:=True
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例17] 複製單元格(Copy方法)
Sub CopyRange()
MsgBox "在單元格B7中寫入公式後,將B7的內容複製到C7:D7內"
Range("B7").Formula = "=Sum(B3:B6)"
Range("B7").Copy Destination:=Range("C7:D7")
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例18]獲取單元格行列值(Row屬性和Column屬性)
Sub RangePosition()
MsgBox "顯示所選單元格區域的行列值"
MsgBox "第 " & Selection.Row & "行 " & Selection.Column & "列"
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例19]獲取單元格區域的單元格數及行列數(Rows屬性、Columns屬性和Count屬性)
Sub GetRowColumnNum()
MsgBox "顯示所選取單元格區域的單元格數、行數和列數"
MsgBox "單元格區域中的單元格數為:" & Selection.Count
MsgBox "單元格區域中的行數為:" & Selection.Rows.Count
MsgBox "單元格區域中的列數為:" & Selection.Columns.Count
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例20]設置單元格中的文本格式
[範例20-01] 對齊文本
Sub HorizontalAlign()
MsgBox "將所選單元格區域中的文本左右對齊方式設為居中"
Selection.HorizontalAlignment = xlHAlignCenter
End Sub
Sub VerticalAlign()
MsgBox "將所選單元格區域中的文本上下對齊方式設為居中"
Selection.RowHeight = 36
Selection.VerticalAlignment = xlVAlignCenter
End Sub
[範例20-02] 縮排文本(InsertIndent方法)
Sub Indent()
MsgBox "將所選單元格區域中的文本縮排值加1"
Selection.InsertIndent 1
MsgBox "將縮排值恢復"
Selection.InsertIndent -1
End Sub
[範例20-03] 設置文本方向(Orientation屬性)
Sub ChangeOrientation()
MsgBox "將所選單元格中的文本順時針旋轉45度"
Selection.Orientation = 45
MsgBox "將文本由橫向改為縱向"
Selection.Orientation = xlVertical
MsgBox "將文本方向恢復原值"
Selection.Orientation = xlHorizontal
End Sub
[範例20-04]自動換行(WrapText屬性)
Sub ChangeRow()
Dim i
MsgBox "將所選單元格設置為自動換行"
i = Selection.WrapText
Selection.WrapText = True
MsgBox "恢復原狀"
Selection.WrapText = i
End Sub
[範例20-05]將比單元格列寬長的文本縮小到能容納列寬大小(ShrinkToFit屬性)
Sub AutoFit()
Dim i
MsgBox "將長於列寬的文本縮到與列寬相同"
i = Selection.ShrinkToFit
Selection.ShrinkToFit = True
MsgBox "恢復原狀"
Selection.ShrinkToFit = i
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例21]設置條件格式(FormatConditions屬性)
Sub FormatConditions()
MsgBox "在所選單元格區域中將單元格值小於10的單元格中的文本變為紅色"
Selection.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlLessEqual, Formula1:="10"
Selection.FormatConditions(1).Font.ColorIndex = 3
MsgBox "恢復原狀"
Selection.FormatConditions(1).Font.ColorIndex = xlAutomatic
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例22]插入批註(AddComment方法)
Sub EnterComment()
MsgBox "在當前單元格中輸入批註"
ActiveCell.AddComment ("Hello")
ActiveCell.Comment.Visible = True
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例23]隱藏/顯示單元格批註
Sub CellComment()
MsgBox "切換當前單元格批註的顯示和隱藏狀態"
ActiveCell.Comment.Visible = Not (ActiveCell.Comment.Visible)
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例24]改變所選單元格的顏色
Sub ChangeColor()
Dim iro As Integer
MsgBox "將所選單元格的顏色改為紅色"
iro = Selection.Interior.ColorIndex
Selection.Interior.ColorIndex = 3
MsgBox "將所選單元格的顏色改為藍色"
Selection.Interior.Color = RGB(0, 0, 255)
MsgBox "恢復原狀"
Selection.Interior.ColorIndex = iro
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例25]改變單元格的圖案
Sub ChangePattern()
Dim p, pc, i
MsgBox "依Pattern常數值的順序改變所選單元格的圖案"
p = Selection.Interior.Pattern
pc = Selection.Interior.PatternColorIndex
For i = 9 To 16
With Selection.Interior
.Pattern = i
.PatternColor = RGB(255, 0, 0)
End With
MsgBox "常數值 " & i
Next i
MsgBox "恢復原狀"
Selection.Interior.Pattern = p
Selection.Interior.PatternColorIndex = pc
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例26]合併單元格
Sub MergeCells()
MsgBox "合併單元格A2:C2,並將文本設為居中對齊"
Range("A2:C2").Select
With Selection
.MergeCells = True
.HorizontalAlignment = xlCenter
End With
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例27]限制單元格移動的範圍
Sub ScrollArea1()
MsgBox "將單元格的移動範圍限制在單元格區域B2:D6中"
ActiveSheet.ScrollArea = "B2:D6"
End Sub
Sub ScrollArea2()
MsgBox "解除移動範圍限制"
ActiveSheet.ScrollArea = ""
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例28]獲取單元格的位置(Address屬性)
Sub GetAddress()
MsgBox "顯示所選單元格區域的地址"
MsgBox "絕對地址:" & Selection.Address
MsgBox "行的絕對地址:" & Selection.Address(RowAbsolute:=False)
MsgBox "列的絕對地址:" & Selection.Address(ColumnAbsolute:=False)
MsgBox "以R1C1形式顯示:" & Selection.Address(ReferenceStyle:=xlR1C1)
MsgBox "相對地址:" & Selection.Address(False, False)
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[範例29]刪除單元格區域(Delete方法)
Sub DeleteRange()
MsgBox "刪除單元格區域C2:D6後,右側的單元格向左移動"
ActiveSheet.Range("C2:D6").Delete (xlShiftToLeft)
End Sub
小結
下面對Range對象的一些常用屬性和方法進行簡單的小結。
1、Activate與Select
試驗下面的過程:
Sub SelectAndActivate()
Range("B3:E10").Select
Range("C5").Activate
End Sub
其結果如下圖所示:
圖05-01:Select與Activate
Selection指單元格區域B3:E10,而ActiveCell則是單元格C5;ActiveCell代表單個的單元格,而Selection則可以代表單個單元格,也可以代表單元格區域。
2、Range屬性
可以使用Application對象的Range屬性引用Range對象,如
Application.Range(「B2」) 『代表當前工作表中的單元格B2
若引用當前工作表中的單元格,也可以忽略前面的Application對象。
Range(「A1:D10」) 『代表當前工作表中的單元格區域A1:D10
Range(「A1:A10,C1:C10,E1:E10」) 『代表當前工作表中非連續的三個區域組成的單元格區域
Range屬性也接受指向單元格區域對角的兩個參數,如:
Range(「A1」,」D10」) 『代表單元格區域A1:D10
當然,Range屬性也接受單元格區域名稱,如:
Range(「Data」) 『代表名為Data的數據區域
Range屬性的參數可以是對象也可以是字符串,如:
Range(「A1」,Range(「LastCell」))
3、單元格引用的快捷方式
可以在引用區域兩側加上方括號來快速引用單元格區域,如:
[B2]
[A1:D10]
[A1:A10,C1:C10,E1:E10]
[Data]
但其引用的是絕對區域。
4、Cells屬性
可以使用Cells屬性來引用Range對象。如:
ActiveSheet.Cells
Application.Cells 『引用當前工作表中的所有單元格
Cell(2,2)
Cell(2,」B」) 『引用單元格B2
Range(Cells(1,1),Cells(10,5)) 『引用單元格區域A1:E10
若想在一個單元格區域中循環時,使用Cells屬性是很方便的。
也可以使用Cells屬性進行相對引用,如:
Range(「D10:G20」).Cells(2,3) 『表示引用單元格區域D10:G20中第2行第3列的單元格,即單元格F11
也可使用語句:Range(「D10」).Cells(2,3)達到同樣的引用效果。
5、Offset屬性
Offset屬性基於當前單元格按所給參數進行偏移,與Cells屬性不同的是,它基於0即基準單元格為0,如:
Range(「A10」).Cells(1,1)和Range(「A10」).Offset(0,0)都表示單元格A10
當想引用於基準單元格區域同樣大小的單元格區域時,則Offset屬性是有用的。
6、Resize屬性
可使用Resize屬性獲取相對於原單元格區域左上角單元格指定大小的區域。
7、SpecialCells方法
SpecialCells方法對應於「定位條件」對話框,如圖05-02所示:
圖05-02:「定位條件」對話框
8、CurrentRegion屬性
使用CurrentRegion屬性可以選取當前單元格所在區域,即周圍是空行和空列所圍成的矩形區域,等價於「Ctrl+Shift+*」快捷鍵。
9、End屬性
End屬性所代表的操作等價於「Ctrl+方向箭」的操作,使用常量xlUp、xlDown、xlToLeft和xlToRight分別代表上、下、左、右箭。
10、Columns屬性和Rows屬性
Columns屬性和Rows屬性分別返回單元格區域中的所有列和所有行。
11、Areas集合
在多個非連續的單元格區域中使用Columns屬性和Rows屬性時,只是返回第一個區域的行或列,如:
Range(「A1:B5,C6:D10,E11:F15」).Rows.Count
將返回5。
此時應使用Areas集合來返回區域中每個塊的地址,如:
For Each Rng In Range(「A1:B5,C6:D10,E11:F15」).Areas
MsgBox Rng.Address
Next Rng
12、Union方法和Intersect方法
當想從兩個或多個單元格區域中生成一個單元格區域時,使用Union方法;當找到兩個或多個單元格區域共同擁有的單元格區域時,使用Intersect方法。
- Aug 14 Sun 2011 23:52
Excel vba 選取亮顯整列
- Aug 14 Sun 2011 22:59
Excel 快速填滿A ~ Z
- Aug 14 Sun 2011 22:41
Excel快速鍵大全
Excel快速鍵大全
- Ctrl組合的快速鍵
Ctrl+( 取消隱藏選取範圍內的任何隱藏列。
Ctrl+) 取消隱藏選取範圍內的任何隱藏欄位。
Ctrl+& 套用外框至選定儲存格。
Ctrl+_ 移除選定儲存格的外框。
Ctrl+~ 套用「通用」數字格式。
Ctrl+$ 套用有兩位小數的「貨幣」格式 (負數以括弧表示)。
Ctrl+% 套用沒有小數位數的「百分比」格式。
Ctrl+^ 套用有兩位小數的「指數」數字格式。
Ctrl+# 套用有年、月和日的「日期」格式。
Ctrl+@ 套用有時鐘和分鐘以及 AM 或 PM 的「時間」格式。
Ctrl+! 套用有兩位小數、千分號以及負數以減號 (-) 表示的「數值」格式。
Ctrl+- 顯示 [刪除] 對話方塊以刪除選定儲存格。
Ctrl+* 選取作用儲存格的目前範圍 (被空白列和空白欄位包圍的資料區域)。
在 PivotTable 中,會選取整份 PivotTable 報表。
Ctrl+: 輸入目前時間。
Ctrl+; 輸入目前日期。
Ctrl+` 在工作表中交替顯示儲存格值和公式。(好用)
Ctrl+' 將公式從作用儲存格上方的儲存格複製到儲存格或資料編輯列中。
Ctrl+" 將值從作用儲存格上方的儲存格複製到儲存格或資料編輯列中。
Ctrl++ 顯示 [插入] 對話方塊以插入空白儲存格。
Ctrl+1 顯示 [儲存格格式] 對話方塊。
Ctrl+2 套用或移除粗體格式。
Ctrl+3 套用或移除斜體格式。
Ctrl+4 套用或移除底線。
Ctrl+5 套用或移除刪除線。
Ctrl+6 在隱藏物件、顯示物件和顯示物件預留位置間交替。
Ctrl+7 顯示或隱藏 [標準] 工具列。
Ctrl+8 顯示或隱藏大綱符號。
Ctrl+9 隱藏選定列。
Ctrl+0 隱藏選定欄位。
Ctrl+A 選取整份工作表(或顯示函數引數,或插入引數名稱)
如果工作表含有資料,Ctrl+A 會選取目前範圍。
第二次按 Ctrl+A 會選取整份工作表。
當插入點位於公式中函數名稱的右邊時,
會顯示 [函數引數] 對話方塊。(好用)
當插入點位於公式中函數名稱的右邊時,
Ctrl+Shift+A 會插入引數名稱及括弧。(好用)
Ctrl+B 套用或移除粗體格式。
Ctrl+C 複製選定儲存格。
Ctrl+C 後面接著另一個 Ctrl+C 會顯示 Microsoft Office 剪貼簿。
Ctrl+D 使用 [向下填滿] 指令將選定範圍中最上面的儲存格的內容和格式,
複製到下面的儲存格中。
Ctrl+F 顯示 [尋找] 對話方塊。
Shift+F5 也會顯示這個對話方塊,
而 Shift+F4 則會重複上一次的 [尋找] 動作。
Ctrl+G 顯示 [到] 對話方塊。
F5 也會顯示這個對話方塊。
Ctrl+H 顯示 [尋找及取代] 對話方塊。
Ctrl+I 套用或移除斜體格式。
Ctrl+K 顯示用於新的超連結的 [插入超連結] 對話方塊,
或用於選定的現有超連結的 [編輯超連結] 對話方塊。
Ctrl+L 顯示 [建立清單] 對話方塊。
Ctrl+N 建立新的空白檔案。
Ctrl+O 顯示 [開啟] 對話方塊以開啟或尋找檔案。
Ctrl+Shift+O 會選取所有含有註解的儲存格。
Ctrl+P 顯示 [列印] 對話方塊。
Ctrl+R 使用 [向右填滿] 指令將選定範圍中最左邊的儲存格的內容和公式
,複製到右邊的儲存格中。
Ctrl+S 以目前的檔案名稱、位置和檔案格式來儲存使用中的檔案。
Ctrl+U 套用或移除底線。
Ctrl+V 在插入點的位置插入剪貼簿的內容,並取代任何的選取內容。
只有在剪下或複製物件、文字或儲存格內容之後才能使用。
Ctrl+W 關閉選定的活頁簿視窗。
Ctrl+X 剪下選定儲存格。
Ctrl+Y 如果可能的話,重複上一個指令或動作。
Ctrl+Z 使用 [復原] 指令以回覆上一個指令,或刪除您輸入的上一個項目。
當顯示「自動校正智慧標籤」時,
Ctrl+Shift+Z 使用 [復原] 或 [取消復原] 指令以
回覆或還原上一個自動校正。
2.功能鍵組合的快速鍵
- F1 顯示 [說明] 工作窗格。
Ctrl+F1 會關閉再重新開啟目前的工作窗格。
ALT+F1 會建立在目前範圍中資料的圖表。
ALT+Shift+F1 會插入新的工作表。 - F2 編輯作用儲存格,並將插入點放在儲存格內容的尾端。
如果已關閉儲存格中的編輯,也會將插入點移到資料編輯列中。
Shift+F2 會編輯儲存格註解。 - F3 將定義的名稱貼到公式中。
Shift+F3 顯示 [插入函數] 對話方塊。 - F4 如果可能的話,重複上一個指令或動作。
Ctrl+F4 會關閉選定的活頁簿視窗。 - F5 顯示 [到] 對話方塊。
Ctrl+F5 會還原選定活頁簿視窗的視窗大小。 - F6 切換至已分割的工作表 ([視窗] 功能表中的 [分割] 指令)
中的下一個窗格。
Shift+F6 會切換至已分割的工作表中的上一個窗格。
如果開啟一個以上的活頁簿視窗,Ctrl+F6 會切換至下一個活頁簿視窗。 - F7 顯示 [拼字檢查] 對話方塊以檢查作用工作表或選定範圍中的拼字。
如果活頁簿視窗沒有最大化,Ctrl+F7 會執行活頁簿視窗上的 [移動] 指令。
請使用方向鍵來移動視窗,並於完成時按 Esc。 - F8 開啟或關閉延伸模式。在延伸模式中,狀態列中會出現「EXT」,
而方向鍵會延伸選取範圍。
Shift+F8 可讓您使用方向鍵在儲存格選取範圍中
加入不相鄰的儲存格或範圍。
如果活頁簿沒有最大化,Ctrl+F8 會執行 [大小] 指令
(位於活頁簿視窗的 [控制] 功能表上)。
ALT+F8 會顯示 [巨集] 對話方塊以執行、編輯或刪除巨集。 - F9 計算所有已開啟的活頁簿中的所有工作表。
F9 後面接著 Enter (若為陣列公式則後面接著 Ctrl+Shift+Enter)
會計算公式的選定部份,並以計算出來的值取代選定部份。
Shift+F9 會計算作用工作表。
Ctrl+ALT+F9 會計算所有已開啟的活頁簿中的所有工作表,
不論上次計算之後是否有所改變。
Ctrl+ALT+Shift+F9 會重新檢查有關連的公式,
然後計算所有已開啟的活頁簿中的所有儲存格,
包括並未標示為需要計算的儲存格。
Ctrl+F9 會最小化活頁簿視窗,變成圖示。 - F10 選取功能表列,或同時關閉已開啟的功能表和子功能表。
Shift+F10 會為選定項目顯示快顯功能表。
ALT+Shift+F10 會顯示智慧標籤的功能表或訊息。
如果出現一個以上的智慧標籤,便會切換至下一個智慧標籤,
並顯示其功能表或訊息。
Ctrl+F10 會最大化或還原選定的活頁簿視窗。 - F11 建立目前範圍中的資料的圖表。
Shift+F11 會插入新的工作表。
ALT+F11 會開啟 Visual Basic 編輯器,
您可以在其中使用 Visual Basic for Applications (VBA) 建立巨集。
ALT+Shift+F11 會開啟 Microsoft Script Editor,
您可以在其中新增文字、編輯 HTML 標籤及修改任何指令碼。 - F12 顯示 [另存新檔] 對話方塊。
3.其他組合的快速鍵
- 方向鍵 在工作表中往上、下、左或右移動一個儲存格。
Ctrl+方向鍵會移到工作表中目前資料區域
(資料區域:包含資料且周圍是空儲存格或資料工作表框線的儲存格範圍。)
的邊緣。
Shift+方向鍵會逐格延伸儲存格的選取範圍。
Ctrl+Shift+方向鍵會將儲存格的選取範圍,
延伸至和作用儲存格相同的欄或列中的最後一個非空白儲存格。
如果可以看到功能表,向左箭號或向右箭號會選取左邊或右邊的功能表。
當子功能表開啟時,這些方向鍵會在主功能表和子功能表之間切換。
當功能表或子功能表開啟時,向下箭號或向上箭號會選取
下一個或上一個指令。
在對話方塊中,方向鍵會在已開啟的下拉式清單中的選項之間移動,
或在選項群組中的選項之間移動。
ALT+向下箭號會開啟選定的下拉式清單。 - Backspace 在資料編輯列中往左邊刪除一個字元。
也會清除作用儲存格的內容。 - DELETE 移除選定儲存格中的儲存格內容 (資料和公式),
但是不會影響儲存格格式或註解。
在儲存格編輯模式中,會刪除插入點右邊的字元。 - End 當開啟 Scroll Lock 時,會移至視窗右下角的儲存格。
如果可以看到功能表或子功能表,也會選取功能表上最後一個指令。 - Ctrl+End 會移至工作表上最後一個儲存格,
在所使用的最右邊欄位的最下面一列。
Ctrl+Shift+End 會將儲存格選取範圍,延伸至工作表上所使用的
最後一個儲存格 (右下角)。 - Enter 從儲存格或資料編輯列完成儲存格項目,
然後選取下面的儲存格 (依照預設)。
在資料表單中,會移至下一筆記錄中的第一個欄位。
開啟選定的功能表 (按 F10 以啟動功能表列) 或執行選定指令的動作。
在對話方塊中,會執行對話方塊中預設指令按鈕的動作
(有粗線外框的按鈕,通常是 [確定] 按鈕)。
ALT+Enter 會在相同儲存格中開始新的一行。
Ctrl+Enter 會以目前項目填滿選定的儲存格範圍。 - Shift+Enter 會完成儲存格項目,然後選取上方的儲存格。
- Esc 取消儲存格或資料編輯列中的項目。
也會關閉已開啟的功能表或子功能表、對話方塊或訊息視窗。 - Home 移至工作表中一列的開頭。
開啟 Scroll Lock 時,移至視窗左上角的儲存格。
如果可以看到功能表或子功能表,會選取功能表上的第一個指令。 - Ctrl+Home 會移至工作表的開頭。
Ctrl+Shift+Home 會將儲存格選取範圍延伸至工作表的開頭。 - PageDown 在工作表中往下移動一個畫面。
ALT+PageDown 會在工作表中往右移動一個畫面。 - Ctrl+PageDown 會移至活頁簿中下一個工作表。
Ctrl+Shift+PageDown 會選取活頁簿中目前的和下一個工作表。 - PageUp 在工作表中往上移動一個畫面。
ALT+PageUp 會在工作表中往左移動一個畫面。 - Ctrl+PageUp 會移至活頁簿中上一個工作表。
Ctrl+Shift+PageUp 會選取活頁簿中目前的和上一個工作表。 - Spacebar在對話方塊中,執行選定按鈕的動作,
或是選取或取消選取核取方塊。
Ctrl+Spacebar會選取工作表中的一整欄。
Shift+Spacebar會選取工作表中的一整列。 - Ctrl+Shift+Spacebar會選取整份工作表。
如果工作表含有資料,Ctrl+Shift+Spacebar會選取目前範圍。
第二次按Ctrl+Shift+Spacebar會選取整份工作表。
當選取物件時,Ctrl+Shift+Spacebar會選取工作表上的所有物件。
ALT+Spacebar會顯示 Excel 視窗的 [控制] 功能表。 - Tab 在工作表中往右移動一個儲存格。
在受保護的工作表中的未鎖定儲存格之間移動。
移至對話方塊中的下一個選項或選項群組。
Shift+Tab 會移至工作表中的上一個儲存格,或是對話方塊中的上一個選項。
Ctrl+Tab 會切換至對話方塊中的下一個索引標籤。
Ctrl+Shift+Tab 會切換至對話方塊中的上一個索引標籤。
4.補充組合的快速鍵
- 移動
- Ctrl+→ 移動到最右
- Ctrl+← 移動到最左
- Ctrl+↑ 移動到最上
- Ctrl+↓ 移動到最下 - 選取
- Shift+→ 往右多選取一個
- Shift+ ← 往左多選取一個
- Shift+↑ 往上多選取一個
- Shift+↓ 往下多選取一個
- Shift+PageUp 往上選取全部
- Shift+PageDown 往下選取全部
- Shift+Home 往左選取全部
- Shift+End 往右選取全部
- Ctrl+Shift+* 選取所有資料 - 格式設定
- Ctrl+1 格式設定視窗
- Ctrl+Shift+~ G/通用
- Ctrl+Shift+$ 貨幣
- Ctrl+Shift+% 百分比
- Ctrl+Shift+# 日期
- Ctrl+Shift+@ 時間
- Ctrl+Shift+! 三位加逗號
- Ctrl+Shift+& 加外框
- Ctrl+Shift+- 除外框 - 其他
- Ctrl+Shift+) 使隱藏欄出現
- Ctrl+Shift+( 使隱藏列出現
- Ctrl+Shift+; 顯示當時時間
- Ctrl+F3 定義名稱
- Ctrl+Shift+F3 以欄列建立名稱
- Shift+F2 編輯註解
- Alt+= 自動插入加總公式
- Aug 14 Sun 2011 22:07
Excel VBA 從網頁上抓資料匯入到 Excel中
'定義webURL字串變數Dim webURL As String'webURL為要匯入的網址webURL = "URL;http://xxx.xxx.xxx.xxx/123.htm"With ActiveSheet.QueryTables.Add(Connection:=webURL, Destination:=Range("A1"))' xlOverwriteCells 表示覆蓋欄位.RefreshStyle = xlOverwriteCells' 抓取網頁的第三個表格作為匯入資料.WebTables = "3".Refresh BackgroundQuery:=FalseEnd With
- Aug 14 Sun 2011 21:59
Excel VBA 跨2個(或以上)檔案,內容資料運用
假如在同一資料夾內有 A.xls 和 B.xls 兩個檔案,要使 A.xls 的 Sheet1 儲存格 A1等於 B.xls 的 Sheet1 儲存格 A1
使用巨集來操作至少可以使用以下兩種方法。
方法一、
在A檔案內執行(B檔案可以不用開啟)
Range("a1").Formula = "='[B.xls]Sheet1'!$A$1"Range("a1").Formula = Range("a1").Value ' 讓它的內容等於它的值(不要公式)' 若B檔案不是在同一個資料夾內則需要指定完整的路徑' 例 : Range("a1").Formula = "='C:\XXX\[B.xls]Sheet1'!$A$1"
方法二、
在範圍比較大的時候適用 , 且前提是 B.xls 是已經開啟的檔案
在A檔案內執行
Workbooks("b.xls").Sheets("sheet1").Range("a1:c3").Copy '複製 B.xls Sheet1的 a1到c3ActiveSheet.Paste' 貼上 , 這邊沒有指定要貼在哪裡是因為我們沒有select到其他的檔案或工作表儲存格' 所以它會直接貼到 A.xls Sheet1的 A1
若是有需要在2個檔案中SELECT切換的狀況可以參考
使用VBA把活頁簿中的每個活頁切分儲存為各個檔案
的方式使用windows或workbooks在檔案間切換
- Aug 14 Sun 2011 21:56
Excel vba指令參考
Excel篇 :
Excel.DisplayAlerts := False; //Disable 提示訊息
Excel.Visible := True; //顯示 Excel 畫面
Excel.ActiveWindow.FreezePanes := True; //凍結窗格(上一行一定要先選列或格)
Excel.ActiveWindow.Zoom := 75; //顯示比率為75%
Excel.ActiveWindow.Zoom := True; //依據目前選擇範圍自動決定視窗大小
Workbook篇:
WorkBook := mExcel.WorkBooks[1]; //將指定變數設定第一個活頁簿(數字可以用名稱取代)
WorkBook.Name :='內容'; //變更WorkBook名稱
Excel.WorkBooks.Add; //新增一個空白活頁簿
Excel.WorkBooks.Open(完整路徑); //開啟Excel檔
Excel.WorkBooks[mFile].Close; //關閉Excel檔
DeleteFile(mPath+mFile); //刪除Excel檔
WorkBook.SaveAs(mPath+mFile,-4143); //儲存Excel檔
Sheet篇:
Sheet := mExcel.WorkBooks[1].WorkSheets[1]; //將指定變數設定第一個工作表(數字可以用名稱取代)
Sheet.Name :='內容'; //變更Sheet名稱
Sheet.Copy[After := mWorkBook.Sheets[mWorkBook.Sheets.Count]]; //將mSheet複製到mWorkBook最後
Sheet.Move[After := mWorkBook.Sheets[mWorkBook.Sheets.Count]]; //將mSheet搬移到mWorkBook最後
Workbook.Sheets.Add[After:=mWorkbook.Sheets[mSheetCount-1]]; //新增一個空白工作表
WorkBook.Sheets[1].Delete; //刪除指定Sheet
WorkBook.Sheets[1].Activate; //將指定Sheet設為使用中
刪除多餘Sheet:
if (mWorkBook.Sheets.Count > 1) then
begin
for i:=2 to mWorkBook.Sheets.Count do
mWorkBook.Sheets[2].Delete;
end;
選取篇:
mSheet.Cells.EntireColumn //所有欄
mSheet.Cells.EntireRow //所有列
mSheet.Cells //所有儲存格
mSheet.Columns[1] //第一欄
mSheet.Rows[1] //第一列
mSheet.Cells[r,c] //第r列第c欄
mSheet.Range[起,迄] //區間選擇(起訖可以是欄、列、格)
填值篇:
mSheet.Cells[1,1].Value:= '內容'; //欄位填值
mSheet.Cells[1,1].Formula:= '公式'; //欄位填入公式
mSheet.Cells[1,1].FormulaR1C1:= '公式'; //欄位填入公式
mSheet.Cells[1,1].HasFormula //儲存格是否有公式
格式篇:
mSheet.Range[起,迄].Merge; //合併儲存格
mSheet.Cells.EntireColumn.AutoFit; //最適欄寬
mSheet.Cells.EntireRow.AutoFit; //最適列高
mSheet.Columns[1].ColumnWidth := 100; //設定欄寬
mSheet.Rows[1].RowHeight := 100; //設定列高
mSheet.Rows[1].HorizontalAlignment := -4108; //水平置中(靠左:-4131;靠右:-4152)
mSheet.Rows[1].VerticalAlignment := -4108; //垂直置中(靠左:-4131;靠右:-4152)
mSheet.Rows[1].WrapText := True; //自動換列
mSheet.Columns[1].Hidden := True; //隱藏
mSheet.Columns[1].NumberFormatLocal := '@'; //設定欄位格式[文字]
mSheet.Columns[1].NumberFormatLocal := '#,##0_ '; //設定欄位格式[數值(整數位 三位一撇)]
mSheet.Columns[1].NumberFormatLocal := '#,##0_ ;[紅色]-#,##0 '; //設定欄位格式[數值(整數位 三位一撇 負數紅字)]
mSheet.Columns[1].NumberFormatLocal := '#,##0_);[紅色](#,##0)'; //設定欄位格式[數值(整數位 三位一撇 負數括號紅字)]
mSheet.Columns[1].NumberFormatLocal := '0.00_ '; //設定欄位格式[數值(小數兩位)]
mSheet.Columns[1].NumberFormatLocal := '0.0_);[紅色](0.0)'; //設定欄位格式[數值(小數一位 負數紅字)]
mSheet.Columns[1].NumberFormatLocal := '0.00%'; //設定欄位格式[百分比(小數兩位)]
mSheet.Cells[1].Interior.ColorIndex := 38; //設定底色為玫瑰色
mSheet.Cells[1].Interior.ColorIndex := 6; //設定底色為黃色
mSheet.Cells[1].Interior.ColorIndex := 36; //設定底色為淺黃色
mSheet.Cells[1].Interior.ColorIndex := 35; //設定底色為淺綠色
mSheet.Cells[1,1].Font.Size := 10; //設定字體大小
mSheet.Cells[1,1].Font.Bold := True; //設定粗體字
框線:
mSheet.Cells[1,1].Borders[n].LineStyle := 1;
mSheet.Cells[1,1].Borders[n].Weight := 2;
//n = 5.左上右下斜線 6.左下右上斜線 7.左邊線 8.上邊線 9.下邊線 10.右邊線 11.垂直線 12.水平線
//Borders可使用參數:
// LineStyle = 1 實線;-4115 短虛線;4 長短虛線;5 長短短虛線;-4118 細虛線;-4119 雙實線
// Weight = 由細到粗:1 --> 2 --> -4138 --> 4
// ColorIndex = 顏色
//設定格式化條件
Sheet.Cells[1,1].FormatConditions.Delete; //清除格式化條件
Sheet.Cells[1,1].FormatConditions.Add[Type:='1', Operator:='1', Formula1:='1', Formula2:='2']; //新增格式化條件(最多3個)
//參數說明
// 參數 中文說明 說明
//======== ======== =======================================================================
//Type 來源型態 1.儲存格的值 2.公式
//Operator 規則 1.介於 2.不介於 3.等於 4.不等於 5.大於 6.小於 7.大於或等於 8.小於或等於
//Formula1 條件起
//Formula2 條件迄
mSheet.Cells[1,1].FormatConditions(1).Interior.ColorIndex := 3; //設定條件一為底色紅色
//可設定之格式有:Fonts(字型)、Borders(外框)、Interior(圖樣)
//資料篇
mSheet.Cells.EntireColumn.AutoFilter; //自動篩選
mExcel.Selection.Subtotal(1,-4157,VarArrayOf([4,5,6,7,8]),True,False,True); //做小計
//參數說明
// 參數 中文說明 預設值
//================ ======================== ======
//GroupBy 分組小計欄位 1
//Function 使用函數 -4157 加總
//TotalList 新增小計位置
//Replace 取代目前小計 True
//PageBreaks 每組資料分頁 False
//SummaryBelowData 摘要資料置於小計資料下方 True
//可使用函數:-4157 加總;-4106 平均值;-4112 項目個數;-4113 數字項目數;-4136 最大值;-4139 最小值;
mSheet.Outline.ShowLevels(2); //把小計層級設2顯示
列印篇:
mSheet.PageSetup.PrintTitleRows := '$1:$1'; //列印標題列
mSheet.PageSetup.CenterHeader := '表頭'; //中頁首
mSheet.PageSetup.LeftHeader := '頁次: &P / &N'; //左頁首
mSheet.PageSetup.RightHeader := ''; //右頁首
mSheet.PageSetup.CenterFooter := '& &P / &N'; //中頁尾
mSheet.PageSetup.LeftFooter := '頁次: &P / &N'; //左頁尾
mSheet.PageSetup.RightFooter := ''; //右頁尾
mSheet.PageSetup.PrintArea := '$B$1:$N$300'; //設定列印範圍
mSheet.PageSetup.Orientation := 2; //1.直印 2.橫印
mSheet.PageSetup.Zoom := 65; //列印時小成65%
mSheet.PageSetup.Zoom := True; //使用頁次縮放功能
mSheet.PageSetup.FitToPagesWide := 1; //縮放成一頁寬(需配合Zoom = True)
mSheet.PageSetup.FitToPagesTall := 1; //縮放成一頁高(需配合Zoom = True)
mSheet.PageSetup.PaperSize := 8; //設定紙張大小 8:A3、9:A4
mSheet.PageSetup.TopMargin := 1/0.035; //頂邊距1cm
mSheet.PageSetup.BottomMargin := 1/0.035; //底邊距1cm
mSheet.PageSetup.LeftMargin := 1/0.035; //左邊距2cm
mSheet.PageSetup.RightMargin := 1/0.035; //右邊距2cm
mSheet.PageSetup.HeaderMargin := 1/0.035; //頁首1cm
mSheet.PageSetup.FooterMargin := 1/0.035; //頁尾1cm
mSheet.PageSetup.CenterHorizontally := True; //頁面水平居中
mSheet.PageSetup.CenterVertically := False; //頁面垂直居中
- Aug 14 Sun 2011 10:54
Visual Basic 2010 讀取檔案路徑的檔名
HOW TO:在 Visual Basic 中取得目錄的檔案集合
Dim DirInfo As IO.DirectoryInfo
DirInfo = New IO.DirectoryInfo("你自己的資料夾完整路徑")
For Each file In DirInfo.GetFiles("*.jpg", IO.SearchOption.TopDirectoryOnly)
'設定抓檔案(*.jpg)限定在此資料夾下不包含子資料夾
MsgBox(file.Name)
Next file
DirectoryInfo 類別
命名空間: System.IO
組件: mscorlib (在 mscorlib.dll 中)
System.IO.DirectoryInfo("目錄完整路徑")
1.取得目錄建立的日期和時間 System.IO.DirectoryInfo.CreationTime 屬性
1-1.取得上次存取此目錄的日期和時間 System.IO.DirectoryInfo.LastAccessTime 屬性
1-2.取得上次寫入此目錄的日期和時間 System.IO.DirectoryInfo.LastWriteTime 屬性
- Aug 13 Sat 2011 22:58
AutoIT
AutoIt v3 是用以編寫並生成具有 BASIC 語言風格的腳本程式的免費軟體,它被設計用來在Windows GUI(使用者界面)中進行自動操作。通過它可以組合使用模擬鍵擊、滑鼠移動和視窗/控件操作等來實現自動化任務,而這是其它語言所無法做到或尚無可靠方法實現的(比如VBScript和SendKeys)。
AutoIt 最初是為PC(個人電腦)的「批量處理」而設計,用於對數千台PC進行(同樣的)配置,不過隨著v3版本的到來它也很適合用於家庭自動化和編寫用以完成重複性任務的腳本。
AutoIt 可以做的事:
執行 Windows 及 DOS 下的可執行檔案
模擬鍵擊動作(支援大多數的鍵盤佈局)
模擬滑鼠移動和點擊動作。
對視窗進行移動、調整大小和其它操作。
直接與視窗的「控件「交互(設定/獲取 文字、移動、關閉,等等)
配合剪貼簿行剪下/複製文字操作
對登陸檔進行操作
相關網站:
- [筆記] 關於 AutoIt 實現 DDE 功能
- AutoIT 自動化精靈
- 免費的電腦化自動下單方法(autoit, macro express, 自動排程)
- 簡單AutoIt自動安裝
- 自動安裝程式 - 試試AutoIt
- autoit udf:MyFtp.au3上傳下載實例
- AutoIT簡體論壇
軟體相關:
- Aug 13 Sat 2011 22:03
Excel VBA 相關語法
- EXCEL常用的物件
- Workbook 活頁簿
- Workbooks 活頁簿集合
- Workbooks("filename") 檔名為filename的活頁簿
- ActiveWorkbook 正在作用中的活頁簿
- Sheets 活頁簿中所有工作表
- Sheets(n) 活頁簿中第n張工作表
- Worksheet 工作表
- Worksheets 所有工作表(包括圖表)
- Worksheets("sheet") 指表名為sheet工作表
- ActiveSheet 正在作用中的工作表
- Columns("c1:c2") c1至c2欄(其中c1,c2為A~Z或AA~XFD等欄名)
- Rows("r1:r2") r1至r2列(其中r1,r2為1~1048576等列名
- Range("x1:x2") x1至x2間的儲存格(其中x1,x2為儲存格位址名稱)
- cells(i,j) 儲存格(第i列、第j行)
- ActiveCell 目前的儲存格
- Selection 目前所選取的物件
- 範例:
- Workbooks("Book1").Sheets("Sheet1").Range("A1:D5").Font.Bold = True
- Worksheets("Sheet1").Cells.ClearContents
- Worksheets("Sheet1").Rows(1).Font.Bold = True
- Range("1:1,3:3,8:8")
- Worksheets("Sheet1").Cells(6, 1).Value = 10
- Worksheets("Sheet1").[A1:B5].ClearContents
- ActiveCell.Offset(1, 3).Font.Underline = xlDouble
- 活頁簿常用屬性:
- ActiveWorkBook.Name 目前活頁簿的名稱
- ActiveWorkBook.Save 儲存目前的活頁簿
- ActiveWorkBook.SaveAs Filename := "filename" 另儲新檔
- WorkBooks.Add 新增活頁簿
- WorkBooks(i).Close [SaveChange, Filename, RouteWorkbook] 關閉指定的第i個活頁簿
- SaveChange := True 改變儲存
- SaveChange := False 不會改變儲存
- SaveChange省略時,會出現對話方塊
- filename := "檔名"
- WorkBooks.Open "filename" 開啟一個活頁簿
- Application.Windows 所有活頁簿視窗
- WorkBooks.Count 活頁簿的數量
- WorkBooks.Item(Index) 傳回單一活頁簿,由索引值指定
- 工作表常用屬性:
- Worksheets.Add [Before, After, Count, Type] 新增工作表
- Before := Worksheets(n) 出現於某工作表之前
- After := Worksheets(n) 出現於某工作表之後
- Count := n 新增工作表數量
- Type := xlWorksheet (工作表) 或 xlChart (圖表)
- WorkSheets.Name 工作表名稱
- WorkSheets("Sheet1").Activate 設定工作表為目前作用的功作表
- Worksheets.Add [Before, After, Count, Type] 新增工作表
- 儲存格常用屬性:
- Rows.RowHeight 指定範圍內的所有列高
- Columns.ColumnsWidth:指定範圍內的所欄寬
- expression.NumberFormatLocal 以本地的數字格式
- Range.CurrentRegion 目前區域是指以任意空白列及空白欄的組合為邊界的範圍
範例: Worksheets("Sheet1").Activate ActiveCell.CurrentRegion.Select
- expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo) 以參照的方式
- RowAbsolute 為True,則用列的絕對位址
- ColumnAbsolute 為True,則用欄的絕對位址
- ReferenceStyle 預設值為xlA1,如為xlR1C1則為R1C1的表達方式
- expression.count 傳回範圍的數量(可以是欄數、列數或儲存格數量)
- expression.Item(RowIndex, ColumnIndex) 代表相對於指定之範圍某個位移距離的範圍。
- expression.value 傳回或設定物件的值
- expression.Formula 傳回或設定物件的公式,代表 A1 樣式註解以及巨集語言中的物件公式。
範例:Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10" - expression.FormulaR1C1 傳回或設定物件的公式,並以巨集語言中的 R1C1 樣式標記法表示
範例:Worksheets("Sheet1").Range("B1").FormulaR1C1 = "=SQRT(R1C1)" - expression.Text 傳回或設定物件的文字
範例: Set c = Worksheets("Sheet1").Range("B14") c.Value = 1198.3 c.NumberFormat = "$#,##0_);($#,##0)" MsgBox c.Value MsgBox c.Text
- 常用方法:
- Range.Select方法/Selection屬性 設定目前選取的範圍/使用目前所選取的範圍
範例: Sub Macro1() Sheets("Sheet1").Select Range("A1").Select ActiveCell.FormulaR1C1 = "Name" Range("B1").Select ActiveCell.FormulaR1C1 = "Address" Range("A1:B1").Select Selection.Font.Bold = True End Sub
- expression.Copy 將目前所選取的物件復製至剪貼簿
- expression.Cut 將目前所選取的物件剪下
- expression.Delete 將目前所選取的物件刪除
- expression.Paste 將剪貼簿的內容貼上
範例: Sub CopyRow() Worksheets("Sheet1").Rows(1).Copy Worksheets("Sheet2").Select Worksheets("Sheet2").Rows(1).Select Worksheets("Sheet2").Paste End Sub
- expression.RasteSpecial(Paste,Operation, SkipBlanks, Transpose)
範例: With Worksheets("Sheet1") .Range("C1:C5").Copy .Range("D1:D5").PasteSpecial _ Operation:=xlPasteSpecialOperationAdd End With
- Range.Activate 目前的儲存格
- Range.Clear 清除資料
- Range.ClearContents 清除資料內容
- Range.ClearFormats 清除資料格式
- Range.ClearComments 清除註解
- expression.AutoFit:自動調整列高和欄寬
- Range.FillDown、Range.FillUp、Range.FillLeft、Range.FillRight 填滿
- Range.Offset (RowOffset, ColumnOffset) 指定區域的位移列與行
範例: Sub MoveActive() Worksheets("Sheet1").Activate Range("A1:D10").Select ActiveCell.Value = "Monthly Totals" ActiveCell.Offset(0, 1).Activate End Sub
- Range.Select方法/Selection屬性 設定目前選取的範圍/使用目前所選取的範圍
程式語法:
-
- Dim 陳述式(變數)
- Dim varname [ As [New] type]
- type 包括 Byte、Boolean、Integer、Long、Single、Double、Date、String、Object等
-
- Set 陳述式(物件)
- Set objectvar = {[New] objectexpression | Nothing}
- 例:Set RangeA = Range("A1:B2")
範例: Sub Random() Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1:D5") myRange.Formula = "=RAND()" myRange.Font.Bold = True End Sub
-
- With 多種屬性設定
- With 物件
.屬性1 = 設定值
.屬性2 = 設定值
.... End With範例: Sub AddNew() Set NewBook = Workbooks.Add With NewBook .Title = "All Sales" .Subject = "Sales" .SaveAs Filename:="Allsales.xls" End With End Sub
-
- Array 陣列
- Array(Range1, Range2, ....)
範例: Sub Several() Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select End Sub
-
- InputBox 函數
- InputBox("文字說明",[,title][,default][,xpos][,ypos][,helpfile, context])
-
- MsgBox 函數
- MsgBox "文字說明"
-
- Union 將多個範圍合併成單一Range物件
- Union(Range1, Range2, ...)
範例: Sub MultipleRange() Dim r1, r2, myMultipleRange As Range Set r1 = Sheets("Sheet1").Range("A1:B2") Set r2 = Sheets("Sheet1").Range("C3:D4") Set myMultipleRange = Union(r1, r2) myMultipleRange.Font.Bold = True End Sub
-
- For... Next 陳述式
- For counter = start to end [ step stepvalue]
[statements]
[Exit For]
[statements]
Next [counter]範例: Sub CycleThrough() Dim Counter As Integer For Counter = 1 To 20 Worksheets("Sheet1").Cells(Counter, 3).Value = Counter Next Counter End Sub
-
- For Each... Next 陳述式
- For Each element In group
[statements]
[Exit For]
[statements]
Next [element]範例: Sub ApplyColor() Const Limit As Integer = 25 For Each c In Range("MyRange") If c.Value > Limit Then c.Interior.ColorIndex = 27 End If Next c End Sub
-
- Do ... Loop 陳述式
- Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop
或
Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]
-
- If ... Then ... Else ... 陳述式
- If condition Then [statements][Else elsestatements]
或
If condition Then
[statements]
[ElseIf condition-n Then
[elseifstatements]...
[Else
[elsestatements]]
End If
- Aug 13 Sat 2011 21:45
Visual Basic 2010 計時器控制項
在Visual Basic應用程式建立動畫需要使用Timer計時器控制項,它可以控制繪圖或圖片顯示。
Timer控制項是在指定間隔時間自動產生事件,以便事件處理程序能夠建立動畫效果。
在Visual Basic應用程式只需使用計時器控制項,配合圖片載入與顯示,每次調整圖片位置後,就可以建立圖片移動的動畫效果。
Timer控制項常用屬性與事件
屬性 | 說明 |
Name | 控制項名稱 |
Enabled | 是否啟動計時器控制項,預設值False為不啟動,True為啟動 |
Interval | 設定觸發Tick事件的間隔時間,預設值是100毫秒(10-3秒) |
事件 | 說明 |
Tick | 當Enabled屬性為True,在Interval屬性的間隔時間到時,就會觸發此事件 |
跑馬燈範例:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.TickLabel1.Left -= 10If Label1.Left <= -Label1.Width ThenLabel1.Left = Me.WidthEnd IfEnd Sub
圖片切換程式碼:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.TickStatic i As Integer '儲存索引值的變數PictureBox1.Image = ImageList1.Images.Item(i)i += 1If i = 5 Then i = 0End Sub
- Aug 13 Sat 2011 21:26
Visual Basic 2010 PictureBox
PictureBox圖片盒控制項是一種圖片控制項,可以顯示點陣圖格式BMP、GIF或JPG等圖檔的內容。當在VBE建立好專案後,就可以在表單新增PictureBox控制項
PictureBox控制項的常用屬性
屬性 | 說明 |
Name | 控制項名稱 |
Image | 設定和取得BMP、GIF、JPG、ICO和WMF格式的點陣圖檔的影像資料,在VBE可以直接選取圖檔 |
SizeMode | 圖片顯示方式,其值是PictureBoxMode列舉常數,Normal是在控制項左上角顯示圖片,此為預設值,AutoSize依圖片尺寸自動調整控制項尺寸,CenterImage顯示在控制項中間,StretchImage依控制項尺寸來調整,Zoom可以在控制項顯示完整圖片 |
指定路徑之圖片-使用程式碼
1.指定圖片
只要利用Image.FromFile方法即可達到目的,語法是:
Image.FromFile(”檔案路徑”)
1.1絕對路徑
例如設定Button1的Image屬性,位於C:\pic\cat.jpg的圖片,可寫成:
Button1.Image=Image.FromFile(”C:\pic\cat.jpg”)
設定Form2表單的背景圖片,位於D:\cat.gif的圖片的圖片,可寫成:
Form2.BackgroundImage=Image.FromFile(”D:\cat.gif”)
以上設定圖片是指定完整的圖片路徑,可稱做「絕對路徑」。如果要設定「相對路徑」,怎麼做呢?我們往下介紹。
1.2相對路徑
相對路徑比絕對路徑較有彈性,只要寫出相對於應用程式存放路徑即可,來舉幾個例子吧!
例:設定Button1的背景圖片,此圖片名稱為cat.jpg,圖片位置與應用程式在相同路徑:
Button1.BackgroundImage=Image.FromFile(”cat.jpg”)
只要直接輸入圖片名稱即可
例:設定Button1的背景圖片,此圖片名稱為cat.jpg,圖片路徑在應用程式的上一層目錄中:
Button1.BackgroundImage=Image.FromFile(”..\cat.jpg”)
要指定上一層目錄,在圖片名稱之前加上..\即可
例:設定Button1的背景圖片,此圖片名稱為cat.jpg,圖片路徑在應用程式的上上一層目錄中:
Button1.BackgroundImage=Image.FromFile(”..\..\cat.jpg”)
例:設定Button1的背景圖片,此圖片名稱為cat.jpg,圖片路徑在應用程式的PIC資料夾中:
Button1.BackgroundImage=Image.FromFile(”PIC\cat.jpg”)
例:設定Button1的背景圖片,此圖片名稱為cat.jpg,圖片路徑在應用程式的上一層目錄的ABC資料夾中:
Button1.BackgroundImage=Image.FromFile(”..\ABC\cat.jpg”)
註:如果專案名稱為WindowsApplication2,則應用程式的執行檔在「WindowsApplication2\WindowsApplication2\bin\Debug」裡。所以將dog.jpg放在Debug資料夾裡,就可以用相對路徑Image.FromFile(”cat.jpg”)來存取圖片。
2.移除圖片如要在程式碼裡,將屬性中的圖片移除,只要將屬性設成Nothing即可。
Nothing表示該物件沒有值的意思。
例:移除Form3表單的背景圖:
Form3.BackgroundImage = Nothing
例:移除Button1的Image屬性圖片:
Button1.Image = Nothing
- Aug 13 Sat 2011 21:11
Visual Basic 2010 狀態列控制項
狀態列控制項
在Windows應用程式表單的最下方可以新增狀態列控制項,其主要目的是顯示一些程式執行的狀態資訊, Visual Basic是StatusStrip控制項,只需在「工具箱」視窗按二下StatusStrip控制項,就可以在表單新增狀態列控制項。
StatusStrip控制項的相關屬性說明
屬性 | 說明 |
Name | 控制項名稱 |
Enabled | 控制項是否有作用,預設值True是有作用,False為沒有作用 |
Visible | 是否顯示控制項,預設值True顯示控制項,False為隱藏 |
ToolStripStatusLabel控制項的相關屬性說明
屬性 | 說明 |
Name | 控制項名稱 |
BorderSides | 指定標籤顯示哪幾個方向的邊線 |
BorderStyle | 指定邊線的樣式 |
Text | 項目控制項中顯示的內容 |