目前分類:VB程式設計 (38)

瀏覽方式: 標題列表 簡短摘要

Dim DirInfo As IO.DirectoryInfo
DirInfo = 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 Then
       ListBox1.Items.Add(Microsoft.VisualBasic.Right(file.Name, Len(file.Name) - InStr(1, file.Name, ".")))
    End If
  Next file

alyoou 發表在 痞客邦 留言(0) 人氣()

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中

alyoou 發表在 痞客邦 留言(0) 人氣()

在Visual Basic應用程式建立動畫需要使用Timer計時器控制項,它可以控制繪圖或圖片顯示。

Timer控制項是在指定間隔時間自動產生事件,以便事件處理程序能夠建立動畫效果。

image

在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.Tick
        Label1.Left -= 10
        If Label1.Left <= -Label1.Width Then
            Label1.Left = Me.Width
        End If
    End Sub

 


 

圖片切換程式碼:

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Static i As Integer '儲存索引值的變數
        PictureBox1.Image = ImageList1.Images.Item(i)
        i += 1
        If i = 5 Then i = 0
    End Sub

alyoou 發表在 痞客邦 留言(0) 人氣()

狀態列控制項

在Windows應用程式表單的最下方可以新增狀態列控制項,其主要目的是顯示一些程式執行的狀態資訊, Visual Basic是StatusStrip控制項,只需在「工具箱」視窗按二下StatusStrip控制項,就可以在表單新增狀態列控制項。

image

StatusStrip控制項的相關屬性說明

屬性

說明

Name

控制項名稱

Enabled

控制項是否有作用,預設值True是有作用,False為沒有作用

Visible

是否顯示控制項,預設值True顯示控制項,False為隱藏

ToolStripStatusLabel控制項的相關屬性說明

屬性

說明

Name

控制項名稱

BorderSides

指定標籤顯示哪幾個方向的邊線

BorderStyle

指定邊線的樣式

Text

項目控制項中顯示的內容

alyoou 發表在 痞客邦 留言(0) 人氣()

工具列控制項-項目

Visual Basic是使用ToolStrip控制項來建立工具列,它是一種容器控制項,可以新增各種項目控制項。

image

項目控制項

說明

ToolStripButton

建立工具列的按鈕控制項

ToolStripLabel

新增工具列的標籤控制項

ToolStripTextBox

新增工具列的文字方塊控制項

ToolStripSeparator

在工具列建立一條分隔線

ToolStrip控制項的相關屬性說明

屬性

說明

Name

控制項名稱

Items

工具列上項目控制項的集合物件

ShowItemToolTips

是否顯示項目控制項的提示文字,預設值為True顯示,False為不顯示

Dock

控制項緊結外部容器的哪些邊,預設值Top是緊結上方,Left是左邊、Right是右邊、Bottom是下方,Fill是填滿四邊

ToolStripButton控制項的相關屬性

屬性

說明

Name

控制項名稱

Text

按鈕的標題文字

DisplayStyle

按鈕顯示樣式是文字Text、圖形Image或兩者皆有,預設值是Image

ToolTipText

按鈕的提示文字

Image

設定按鈕顯示的圖形

ImageScaling

設定是否自動調整至ToolStrip控制項的尺寸,即預設值SizeToFit,None就是顯示原圖形尺寸

TextDirection

文字方向是水平、垂直90度,垂直270度等

TextImageRelation

如果按鈕是圖形文字兩者皆有時,設定文字與圖形是重疊顯示、文字在上或圖形在上來顯示

alyoou 發表在 痞客邦 留言(0) 人氣()

功能表控制項

(MenuStrip)可以在表單上方的標題列下建立指定功能的功能表列,每一個功能表列的選項本身或選單中的選項都是ToolStripMenuItem控制項。

image

建立功能表控制項-新增

可以直接在表單上新增MenuStrip功能表控制項,並且編輯其選項和子選單。

建立選項的事件處理程序

在功能表選項如同表單上的按鈕控制項,按一下就可以執行事件處理程序的程式碼,其預設事件是Click。

image

ToolStripMenuItem控制項的相關屬性

屬性

說明

Name

選項名稱

Text

選項的標題名稱,"&"符號可以建立Alt組合鍵

Checked

是否為勾號已核取狀態,True為是,False預設值為不是

ShortcutKeys

設定選項的快速鍵,可以使用組合鍵來執行選項

Enabled

選項是否有作用,True預設值是有作用,False為沒有作用(灰色顯示)

Visible

是否顯示選項,True預設值是顯示,False為不顯示

ToolTipText

選項的提示文字

alyoou 發表在 痞客邦 留言(0) 人氣()

當在文字方塊控制項輸入文字內容時,控制項會觸發一系列鍵盤事件,如下表所示:

事件

說明

KeyDown

當使用者在控制項擁有焦點時,按下按鍵時產生的事件

KeyPress

當使用者按下和釋放ANSI字碼的按鍵時產生此事件,可以取得輸入的字元

KeyUp

當使用者在控制項擁有焦點時,放開按鍵時產生的事件

KeyDown和KeyUp事件處理程序是依參數的KeyEventArgs物件屬性來取得按下哪一個按鍵,其相關屬性如下表所示:

屬性

說明

KeyCode

取得按下按鍵的「按鍵碼」(Key Code)整數值,可以使用Keys列舉常數,例如:四個方向鍵為Keys.Up、Keys.Down、Keys.Right和Keys.Left

Control

檢查是否按下Ctrl鍵,True為按下,False為沒有按下

Alt

檢查是否按下Alt鍵,True為按下,False為沒有按下

Shift

檢查是否按下Shift鍵,True為按下,False為沒有按下

 

KeyPress事件是在KeyDown事件之後和KeyUp事件之前觸發,可以使用函數來取得按鍵的ASCII碼,在事件處理程序傳入的參數是KeyPressEventArgs物件,其相關屬性如下表所示:

屬性

說明

KeyChar

傳回使用者按下按鍵的字元

Handled

設定是否忽略使用者按鍵,預設值False表示不忽略,True為忽略

alyoou 發表在 痞客邦 留言(0) 人氣()

滑鼠事件是在表單或控制項上操作滑鼠時,移動、按一下和按二下等操作所觸發的一系列事件,如下表所示:

事件

說明

MouseEnter

當滑鼠進入控制項時,就會觸發此事件

MouseMove

當滑鼠移動時,就會觸發此事件

MouseDown

當按下滑鼠按鍵時,就會觸發此事件

Click

當滑鼠按一下時,就會觸發此事件

DoubleClick

當滑鼠按二下,即雙擊時,就會觸發此事件

MouseUp

當滑鼠按鍵放開時,就會觸發此事件

MouseLeave

當滑鼠離開控制項時,就會觸發此事件

MouseUp和MouseDown事件

MouseUp和MouseDown事件是當使用者按下滑鼠按鍵和放開時,產生的事件。程式碼可以從事件處理程序參數e的MouseEventArgs物件取得使用者按下哪一個按鍵。

物件常用的屬性,如下表所示:

屬性

說明

Button

其值是使用者按下滑鼠的哪一個按鍵,它是MouseButtons列舉常數,MouseButtons.Left是左鍵、MouseButtons.Middle是中鍵,和MouseButtons.Right是右鍵

X

滑鼠游標位置的X座標

Y

滑鼠游標位置的Y座標

 

MouseEnter、MouseMove和MouseLeave事件-說明

MouseEnter和MouseLeave事件是滑鼠進入控制項和離開控制項時產生的事件,我們可以使用這2個事件建立控制項的動畫效果。例如:進入控制項時,背景色彩為紅色,離開時控制項變成綠色。

MouseMove事件是在滑鼠移動時產生的一系列事件,在程式中只需使用此事件,就可以建立滑鼠拖拉控制項的效果,因為需要調整控制項位置,換句話說,我們需要在程式碼取得控制項的座標和尺寸。

其相關屬性如下表所示:

屬性

說明

Top

設定或取得控制項上邊緣和其容器上(即表單)邊緣之間的距離,即控制項左上角的Y座標

Left

設定或取得控制項內部左邊緣和其容器左邊緣之間的距離,即控制項左上角的X座標

Width

控制項的寬度

Height

控制項的高度

alyoou 發表在 痞客邦 留言(0) 人氣()

表單和控制項預設的事件處理程序,如下表所示:

控制項種類

預設事件

預設的事件處理程序

表單(Form1)

Load

Form1_Load()

按鈕(Button1)

Click

Button1_Click()

標籤(Label1)

Click

Label1_Click()

文字方塊(TextBox1)

TextChanged

TextBox1_TextChanged()

核取方塊(CheckBox1)

CheckedChanged

CheckBox1_CheckedChanged()

選項按鈕(RadioButton1)

CheckedChanged

RadioButton1_CheckedChanged()

 

常用的表單事件

事件

說明

Load

在執行應用程式載入表單時,就會觸發此事件,通常我們會在此事件的處理程序,指定全域變數的初值或控制項的初始狀態

Resize

當調整視窗尺寸時,就會觸發此事件

Activated

當視窗成為「作用中」視窗時,就會觸發此事件

Deactivate

當視窗成為「非作用中」視窗時,即在其他視窗後方時,就會觸發此事件

Paint

重繪表單內容,通常是使用在繪圖時,詳細說明請參閱第11章

FormClosing

當使用者按下標題列的【X】鈕時,表單在準備關閉前會觸發此事件,我們可以在此事件取消視窗關閉

FormClosed

在FormClosing事件之後,就會觸發此事件

alyoou 發表在 痞客邦 留言(0) 人氣()

字串是String資料型態的變數或字串值,字串是0或多個依序的Char資料型態的字元,以雙引號括起的文字內容,如下所示:
Dim str As String ="Visual Basic 2010程式設計"

Dim str1 As String
str1 = "Visual Basic 2010程式設計"
字串長度與大小寫轉換
函數可以取得字串長度、進行英文字母大小寫轉換和刪除頭尾的空白字元,如下表所示:
函數 說明
Len(Stmt) 傳回整數的字串長度,擁有多少個字元或中文字
UCase(Stmt) 將參數字串或字元的英文字母轉換成大寫
LCase(Stmt) 將參數字串或字元的英文字母轉換成小寫
LTrim(Stmt) 刪除字串開頭的空白字元
RTrim(Stmt) 刪除字串結尾的空白字元
Trim(Stmt) 刪除頭尾兩端的空白字元
Space(num) 傳回參數num個空白字元的字串
Asc(Stmt) 傳回參數Stmt字串第1個字元的ASCII碼,例如:Asc("A")為65

取出子字串與字串反轉
函數 說明
Mid(Stmt, start[ , length]) 從參數Stmt字串的start位置(從1開始)取出長度length的子字串,如果沒有length參數,就是從start位置到字串結尾的所有字元
Left(Stmt, length) 從參數Stmt字串從開頭起算共length長度的字元,如果為0傳回空字串,如果大於字串長度,傳回整個字串
Right(Stmt, length) 從參數Stmt字串從右邊回頭起算共length長度的字元,如果為0傳回空字串,如果大於字串長度,傳回整個字串
StrReverse(Stmt) 將參數的Stmt字串反轉,例如:Visual Basic成為cisaB lausiV

       
範例練習 :
Dim a, b, c As String

        a = "1234567.abc"
        b = "98766.abcd"

        MsgBox("LEFT : " & Microsoft.VisualBasic.Left(a, 3))
        MsgBox("Right : " & Microsoft.VisualBasic.Right(a, 3))
        MsgBox("Mid : " & Microsoft.VisualBasic.Mid(a, 4, 3))
        MsgBox("Len : " & Microsoft.VisualBasic.Len(a))


InStr函數,傳回在某字串中一字串的最先出現位置,傳回0表示沒有找到,我們可以利用它來判斷字串中是否有關鍵字存在。

Dim str1 As String, str2 As String 
str1 = "1 3  2  abc     " 
str2 = "c" 
msgbox(InStr(1, str1, str2))  
msgbox(InStr(1, str1, str2) >= 1)  

alyoou 發表在 痞客邦 留言(0) 人氣()

陣列是一種程式語言的基本資料結構,屬於一種循序性的資料結構,陣列屬於參考資料型態,它可以將相同資料型態的變數集合起來,使用一個名稱代表,以索引值存取元素,每一個元素相當於是一個變數。

陣列同樣使用【Dim】關鍵字來宣告,我們可以在宣告同時指定陣列尺寸。一維陣列的宣告語法,如下所示:

Dim 陣列名稱(最大索引) As 資料型態

Dim 陣列名稱(0 To 最大索引) As 資料型態

陣列元素個數為括號的最大索引數加一,也可以使用To關鍵字指出範圍。

例如:宣告一維陣列來儲存學生姓名和成績,如下所示:

Dim arrScore(4) As Integer

Dim arrName(4) As String

上述程式碼宣告2個一維陣列,一為整數陣列;一是字串陣列,括號值是陣列最大的索引值。索引值是從0開始,以整數陣列來說是0~4共有5個元素。

宣告一維陣列-陣列值

我們也可以在宣告陣列時,不指定陣列最大索引值,而直接指定陣列元素的初值,如下所示:

Dim arrScore() As Integer = {60, 89, 75, 68, 90}

另一種方法是使用指定敘述來指定陣列值,如下所示:

arrScore(0) = 60

arrScore(1) = 89

arrScore(2) = 75

arrScore(3) = 68

arrScore(4) = 90

 

宣告一維陣列-取出陣列值

同樣方式,我們可以使用索引值來取出陣列元素值,如下所示:

Dim score As Integer

score = arrScore(3)

上述程式碼取得陣列索引3的值,因為索引值從0開始,也就是陣列的第4個元素值68

 

For Each迴圈走訪陣列元素與邊界函數-走訪陣列(語法)

For Each迴圈可以輕鬆走訪整個一維陣列,其語法如下所示:

For Each 變數 In 陣列

程式區塊

Next

上述「變數」可以取得陣列的一個元素,變數需要和陣列屬於相同資料型態,迴圈自動從索引0開始,每執行一次迴圈取得一個元素值並且自動移至下一個元素,直到沒有元素為止。

例如:計算上一節arrScore陣列元素的總和,如下所示:

For Each element In arrScore

total += element

Next

上述程式碼的變數element是陣列元素,每執行一次,就將陣列元素值加到total,最後變數total是陣列元素的總和。

 

如果使用For/Next迴圈(Do/Loop迴圈也可以)來存取陣列元素,我們可以搭配Visual Basic函數來取得陣列邊界,傳入參數是陣列變數,如下表所示:

函數

說明

LBound(Array)

傳回整數值的陣列最小索引值,因為Visual Basic預設索引是從0開始,所以其預設的傳回值是0

UBound(Array)

傳回整數值的陣列最大索引值

 

 

多維陣列的處理-說明

二維陣列或多維陣列都是一維陣列的擴充。如果將一維陣列想像成一度空間的線,二維陣列就是二度空間的平面,三維陣列即空間。

在日常生活中的二維陣列應用非常廣泛,只要是平面的表格,都可以轉換成二維陣列來表示。例如:月曆、功課表和成績單等。例如:在Visual Basic宣告學生成績的二維陣列,如下所示:

Dim Scores(,) As Integer = { { 54, 68, 93 }, { 67, 78 , 89} }

 

二維陣列如果沒有指定陣列初值,我們需要在宣告時指定陣列尺寸,如下所示:

Dim Scores(1, 2) As Integer

Scores(0,0)=54

Scores(0,1)=68

Scores(0,2)=93

Scores(1,0)=67

Scores(1,1)=78

Scores(1,2)=89

上述程式碼設定二維陣列的元素值。

 

多維陣列的處理-走訪元素

在設定陣列值後,存取二維陣列需要使用二層巢狀迴圈,如下所示:

For i = 0 To 1

    For j = 0 To 2

       Sums(i) += Scores(i, j)

   Next j

Next i

alyoou 發表在 痞客邦 留言(0) 人氣()

「變數範圍」(Scope)是當程式執行時,變數可以讓程序或函數內或其他程式區塊存取的範圍。

變數依宣告位置擁有三種範圍,如下所示:

  • 區塊範圍(Block Scope):在程式區塊內使用Dim宣告的變數,變數只能在區塊內使用,在區塊外的程式碼並無法存取這些變數。
  • 區域範圍(Local Scope):在程序和函數內使用Dim宣告的變數,變數只能在程序或函數內使用,程序或函數外程式碼並無法存取此變數。
  • 全域範圍(Global Scope):變數如果是在模組/類別中,以Dim或Private宣告在程序和函數外,則該模組/類別檔案的程序和函數都可以存取此變數。
 

alyoou 發表在 痞客邦 留言(0) 人氣()

Function函式,函式和Sub程序很像,也是可以自己寫出一個具功能的程式區塊,以方便重複使用,差別在於Function函式有傳回值,而Sub程序沒有傳回值

在Visual Basic程式的函數語法,如下所示:

[Public | Private] Function 名稱 [As 資料型態]

程式區塊

Return 值 | 名稱 = 值

End Function

As之後是傳回值的資料型態。函數傳回值是使用Return關鍵字來傳回值,或將函數名稱指定成需要傳回的值。

例如:將1加到10的For/Next迴圈的程式區塊,轉換成AddToTen()函數,如下所示:

Function AddToTen()
Dim intI, intTotal As Integer
For intI = 1 To 10
    IntTotal = intTotal + intI
Next intI
    Return intTotal
End Function

函數使用Return傳回最後結果。傳回值也可以將函數名稱指定成傳回值,如下所示:

AddToTen = intTotal

 

函數因為擁有傳回值,通常都是在指定敘述來執行函數呼叫,並且位在指定敘述的右邊,如下所示:

lblOutput.Text = AddToTen()

程序與函數不只是將重複程式區塊抽出成獨立區塊,還可以新增程序與函數的參數。

在呼叫時傳入參數值後,相同的程序與函數就可以得到不同的執行結果。

alyoou 發表在 痞客邦 留言(0) 人氣()

程序是使用Sub和End Sub包圍的程式區塊,在Sub關鍵字後是程序名稱,程序並沒有傳回值。

在Visual Basic程式建立程序的語法,如下所示:

[Public | Private] Sub 名稱

    程式區塊

End Sub

上述Sub指令前的Public或Private是存取修飾子。

程序名稱的命名和變數名稱相同,在同一個模組不能使用相同的程序名稱。例如:顯示書名的程序,如下所示:

Sub ShowTitle()
Dim msg As String
        msg = "Visual Basic 2010程式設計"
lblOutput.Text = msg & vbNewLine
End Sub

 

 


在程式碼呼叫程序是使用Call指令,只需在其後加上程序名稱即可,如下所示:


Call ShowTitle()

上述程序呼叫因為程序沒有參數,也可以省略括號,或不使用Call關鍵字也可以,如下所示:

ShowTitle

 

範例:

所以在Form1_Load寫入:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Call Sum100() '呼叫程序
    End Sub
End Class
或省略Call關鍵字也可以:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Sum100() '省略Call也能呼叫程序
    End Sub
End Class
因此完整的程式碼如下:
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call Sum100() '呼叫程序
    End Sub
    Sub Sum100()
        Dim S As Integer
        For i As Integer = 1 To 100
            S += i
        Next
        MsgBox(S)
    End Sub
End Class

alyoou 發表在 痞客邦 留言(0) 人氣()

清單控制項

清單控制項也是一種選擇用途的控制項,共有三種控制項如下所示:

清單方塊(ListBox):顯示項目清單,使用者可以選取1到多個選項,如下圖所示:

image

在表單設計視窗新增清單控制項後,例如:ListBox1,就可以在「屬性」視窗找到【Items】屬性來新增項目,如下圖所示:

選取ListBox可自訂編輯的項目

image

輸入需要的項目名稱,完成按確定按鈕

image 

也可以使用Items屬性來修改

image

 

 

 

下拉式清單方塊(ComboBox):

使用下拉式方式清單方塊來顯示項目清單,擁有多種顯示方式,如下圖所示:

image

選取ComboBox可自訂編輯的項目

image

輸入需要的項目名稱,完成按確定按鈕

image

底下為執行選擇的畫面表示

image

 

清單控制項的項目清單是名為ObjectCollection的集合物件,Visual Basic程式碼可以使用Items屬性取得此集合物件,即可使用相關方法來新增或刪除項目。其相關方法如下表所示:

方法

說明

範例

Add(String)

新增參數字串到清單

ListBox1.Items.Add(“老鼠”)

Insert(Int, String)

在Int索引位置(以0開始)插入第2個參數的字串到清單

ListBox1.Items.Insert(1,“行動碟”)

Remove(String)

從清單刪除參數字串的項目

ListBox1.Items.Remove(“老鼠”)

RemoveAt(Int)

從清單刪除參數索引值的項目

ListBox1.Items.RemoveAt(1)

Clear()

清除清單的所有項目

ListBox1.Items.Clear()

nListBox控制項的常用屬性,如下表所示:

屬性

說明

Name

控制項名稱

Sorted

是否排序項目,預設值False是不排序,True為排序

MultiColumn

是否多欄顯示項目,預設值是False只以單欄顯示,True為多欄顯示

SelectionMode

清單項目的選取方式,其值是SelectionMode列舉常數,None是不能選取,One是單選(預設值),MultiSimple使用簡單方式來選取多個項目,按一下選取,再按一下取消,MultiExtended需要配合Ctrl和Shift鍵才能選取多個項目

Items

設定或取得清單項目的集合物件

SelectedItems

如果是多選,傳回選擇項目的集合物件

SelectedIndex

傳回目前選擇的項目索引,-1表示沒有選取,0為第1個項目

alyoou 發表在 痞客邦 留言(0) 人氣()

Exit For跳出迴圈

nFor/Next迴圈如果尚來到達結束條件時,就可以使用Exit For強迫跳出For/Next迴圈,馬上結束迴圈的執行,如下所示:

For intI = 1 To 100 Step 1

    If amount <= 0 Then
       Exit For
    End If

Next

alyoou 發表在 痞客邦 留言(0) 人氣()

For To/Next

迴圈可以執行固定次數的迴圈,預設每次增加1,如果到達結束條件,就結束迴圈執行。其語法如下所示:

For 變數 = 起始值 To 終止值

程式區塊

Next 變數

上述迴圈的「變數」是計數器變數,其範圍是從「起始值」到「終止值」,每次增加1,執行迴圈的次數是:「終止值」-「起始值」+1次,其中Next關鍵字後的「變數」可以省略。

例如:計算6加到15總和的迴圈,如下所示:

Dim intI, intTotal As Integer
For intI = 6 To 15
    intTotal = intTotal + intI
Next intI

 


For Step/Next


For/Next迴圈的增量如果不是1,我們可以使用Step關鍵字指定每次增加或減少的量。如果使用負數值,表示每次是將計數器變數減掉Step值,此時For Step/Next迴圈,如下所示:

For intI = 100 To 1 Step -1
    intTotal = intTotal + intI
Next intI

上述程式碼倒過來從100加到1,變數intI值依序100、99、98、97、…、3、2、1共執行100次迴圈

alyoou 發表在 痞客邦 留言(0) 人氣()

Do/Loop
迴圈可以使用While條件在迴圈開頭檢查,開頭檢查的目的是檢查是否允許進入迴圈,當While的測試條件成立才能進入迴圈。
例如:計算1萬元5年複利18%的本利和,如下所示:
intI = 1 
dblTotal = 10000
dblRate = 0.18
Do While intI <= 5
   dblTotal += dblTotal * dblRate
   intI = intI + 1
Loop


Do Until/Loop迴圈

Do/Loop迴圈如果使用Until條件在迴圈開始檢查,迴圈是執行到條件成立為止,如果條件不成立就進入迴圈。
例如:計算1萬元5年複利18%的本利和,如下所示:
intI = 1 
dblTotal = 10000
dblRate = 0.18
Do Until intI > 5
   dblTotal += dblTotal * dblRate
   intI = intI + 1
Loop



Do/Loop While迴圈

nDo/Loop迴圈可以使用While條件在迴圈結尾檢查,此時Do/Loop迴圈至少會執行一次。
例如:計算1萬元5年複利18%的本利和,如下所示:
intI = 1 
dblTotal = 10000
dblRate = 0.18
Do
   dblTotal += dblTotal * dblRate
   intI = intI + 1
Loop While intI <= 5



Do/Loop Until迴圈

Do/Loop迴圈如果使用Until條件在迴圈結尾檢查,迴圈也一樣至少執行一次。
例如:計算1萬元5年複利18%的本利和,如下所示:
intI = 1 
dblTotal = 10000
dblRate = 0.18
Do
    dblTotal += dblTotal * dblRate
    intI = intI + 1
Loop Until intI > 5

alyoou 發表在 痞客邦 留言(0) 人氣()

Choose()函數

可以依據第1個參數的整數值,來傳回對應值

程式碼依照變數inDay的整數值,值1傳回第2個參數,即星期日,值2傳回第3個參數,依此類推。

lblOutput.Text=Choose(inDay, "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六")

alyoou 發表在 痞客邦 留言(0) 人氣()

變數的命名規則

識別字不可使用Visual Basic關鍵字或系統的物件名稱。

  • 名稱必須是英文字母或底線"_"開頭,如果以底線開頭,至少需要一個其他英文字母或數字。
  • 名稱長度不可超過16383個字元,不區分英文字母大小寫,abc和ABC代表同一個名稱。
  • 名稱中間不能有句點"."、運算子(例如:+-*/^等)或空白,只能是英文字母、數字和底線。
  • 在宣告的有效範圍內必須唯一。

匈牙利命名法是將變數的前3個字元視為資料型態,依不同資料型態加上字首字串,如下表所示:

資料類型

字首

範例

Booleam

bln

blnDoit

Char

chr

chrA

Integer

int

intCounter

Object

obj

objCar

String

str

strName

 

 

物件名稱的命名規則

  • 當我們使用VBE將控制項物件新增至表單時,預設是以控制項名稱加上編號作為名稱(即Name屬性的值)。
  • 例如:Form1、Label1和Button1等,預設的物件名稱缺乏可讀性,並不能作為程式註解的用途,建議將物件名稱重新命名成有意義的名稱。

表單與控制項類

字首

範例

表單

frm

frmTest、frmCalculate

按鈕

btn

btnSave、btnOpen

標籤

lbl

lblShowMessage

文字方塊

txt

txtName、txtStudentName

alyoou 發表在 痞客邦 留言(0) 人氣()

1 2