VBA 常用參數方法| CYL菜鳥攻略 - - 點部落

文章推薦指數: 80 %
投票人數:10人

Cells 將第一行第一列的儲存格 ... 指定某個檔案、某個表單,向下至最底行,取得此行數 ... WorksheetFunction:表示呼叫當前Excel程式裡的公式。

變數.常數常用基本方法 變數DimAPPLEAsInteger*除了宣告成基本型態外(String/Integer/Boolean/Float)宣告為 Variant 的變數可以儲存任何類型的資料。

未經宣告的變數預設會是 Variant 萬用類型 OptionExplicit'強迫變數宣告可以在程式碼的開頭加上避免沒宣告的情況下使用變數 PublicMyVarAsInteger如將變數宣告成Public,則可以跨模組Module調用此變數 把變數放入儲存格中Range("A1").Value=APPLE 視窗提示視窗MsgBox"valueis"&x串接字串要用"&" 常數ConstSampleIntAsInteger=10001執行過程中都是固定值,不會變動 儲存格:CellCells(1,1).Value=23Cells 將第一行第一列的儲存格Cells配合RangeRange(Cells(1,1),Cells(4,2)).Value=13 列(直)Columns(2).Select 行(橫)Rows(3).Select 複製貼上Selection.CopyActiveSheet.Paste 清除儲存格Range("A1:A2").ClearContents 作業簿間切換Worksheets("工作表1").Range("A1").Value="工作表1的A1"Worksheets("工作表2").Range("A1").Value="工作表2的A1" 新增一個新的工作表Worksheets.Add或Worksheets.Add(Before:=Worksheets(1)).Name="aaaa表單"判斷某頁簽是否存在'先建立一個檢查頁簽的函式,方便調用 FunctioncheckSheetName(sheetname) '檢查此頁簽是否存在 isfind=False ForEachstInSheets Ifst.Name=sheetnameThen isfind=True ExitFor EndIf Next checkSheetName=isfind EndFunction '調用 sheetname="第一季" IfcheckSheetName(sheetname)=FalseThen MsgBox"工作表:"&sheetname&"不存在" 'ExitSub'跳出 EndIf更改作業表名稱Worksheets(1).Name="新的工作表" 計算目前作業表總數MsgBoxWorksheets.Count指定某個檔案、某個表單,向下至最底行,取得此行數Windows("A1233777.xlsm").Activate Sheets("XX123表").Select 或 Workbooks("A1233777.xlsm").Sheets("XX123表").Activate Range("A3").Select RowNum=Selection.End(xlDown).Row 多個活頁簿間切換Workbooks("活頁簿1").Worksheets(1).Range("A1").Value="Hello" 開啟活頁簿Workbooks.Open"C:\VBA\demo.xlsx" 加總Application.WorksheetFunction.SUM公式Application:表示當前的EXCEL執行的程式。

WorksheetFunction:表示呼叫當前Excel程式裡的公式。

後面出現的SUM就是EXCEL裡的預設公式。

DimRow DimSum Range("A1").Select Row=Selection.End(xlDown).Row 取得總行數 Sum=Application.WorksheetFunction.Sum(Range("D2:D"&Row)) 或是Worksheets("Sheet1").Activate Dimcellfrom Dimcellfinish cellfrom=1 cellfinish=5 ActiveSheet.Cells(A,14)=Application.Sum(Range("A"&cellfrom&":C"&cellfinish)) *補充*Cells(列,欄)例如:Cells(1,2)  對應"B1"亦可寫成Cells(1,”B”)或Cells(“1”,”B”),但請注意!沒有Cells("B1")這種寫法!*Rows(列)例如:Rows(“1:3”)  代表第一到第三列*Columns(欄),"欄"或稱為"行"例如:Columns(4)  代表第四欄,等同於Columns(“D”)但如要選取多個欄在雙引號裡面要用英文字! 要寫成:Columns(“A:D”)   代表A欄到D欄*Range() 萬能~~單格:Range(“B1”)多格:Range(“A1,B2,C3,D4”)單欄:Range(“A:A”)多欄:Range("B:B,E:E")多列:把英文字改成數字Range("2:5,6:7")選一個範圍:Range("A1","B2")  表示A1~B2一整區等同於Range("A1:B2")等同於Range(Cells(“A1”),Cells(“B2”))  Cell帶入變數Cells、Rows跟Columns的優點是可以代入變數 例如:迴圈1~5 Fori=1to5 cells(i,2)=i*2 Next結果則是會回傳Cell(1,2)、Cell(2,2)、Cell(3,2)、Cell(4,2)、Cell(5,2) 帶入公式計算Q欄的總和'計算Q欄的總和 DataRow=120#資料總行數 DimSUM_Q Range("Q"&DataRow+1).Select ActiveCell.FormulaR1C1="=SUBTOTAL(9,R[-1]C:R[-"&DataRow-1&"]C)" WithSelection.Interior .Pattern=xlSolid .PatternColorIndex=xlAutomatic .Color=65535 .TintAndShade=0 .PatternTintAndShade=0 EndWith SUM_Q=Range("Q"&DataRow+1).Value篩選+刪除DataRow=120#資料總行數 '篩選刪除 ActiveSheet.Range("$A$1:$O$"&DataRow).AutoFilterField:=5,Criteria1:="=BANANA",Operator:=xlOr,Criteria2:="=APPLE" WithRange("2:"&DataRow)#從第2行開始~第幾行 .SpecialCells(xlCellTypeVisible).Delete#針對被篩出來的進行刪除 .EntireRow.Hidden=False EndWith篩選後確認篩選出的數量 '篩選出U欄Quantity>=0排除負值-20210114add ActiveSheet.Range("$A$1:$AP$"&DataRow_Detail).AutoFilterField:=21,Criteria1:="<0",Operator:=xlAnd '檢查是否篩選出值 DimmyRangeAsRange OnErrorResumeNext SetmyRange=Range("A2:A"&DataRow_Detail).SpecialCells(xlVisible) OnErrorGoTo0 IfmyRangeIsNothingThen MsgBox"nocells" Else WithRange("2:"&DataRow_Detail) .SpecialCells(xlCellTypeVisible).Delete .EntireRow.Hidden=False EndWith EndIf 儲存Workbooks("demo").Save Excel移動位置並選取移動到B4,往上,選取到底Range("B4").End(xlUp).Select移動到B4,往右,選取到底Range("B4").End(xlToRight).Select指定Sheet1工作頁簽,選取B4至B4往右選取到底Worksheets("Sheet1").Activate Range("B4",Range("B4").End(xlToRight)).Select 另存新檔'巨集另存新檔 ' '取得路徑 DimPathAsString Windows("aaa.xlsm").Activate Sheets("mappingtable").Select Path=Range("D1").Value Application.DisplayAlerts=False'關閉警告訊息 '另存結果表 Workbooks("A.xlsx").SaveAsPath&"B.xlsx" '這個前提是,巨集檔必須還開著 Workbooks("B").Close'關閉xls Application.DisplayAlerts=True'開啟警告訊息 '第二種寫法 Path_Result=Path&"B.xlsx" Application.DisplayAlerts=False'關閉警告訊息 '另存結果表 ActiveWorkbook.SaveAsFilename:=Path_Result,FileFormat:=xlOpenXMLWorkbook,CreateBackup:=False Application.DisplayAlerts=True'開啟警告訊息 '檢查工作表是否存在,不存在則建立工作表 FunctioncheckSheetName(sheetname) '檢查活頁是否存在 isfind=False ForEachstInSheets Ifst.Name=sheetnameThen isfind=True ExitFor EndIf Next checkSheetName=isfind EndFunction IfcheckSheetName(sheetname)=TrueThen Application.DisplayAlerts=False'關閉警告訊息 Sheets(sheetname).Select ActiveWindow.SelectedSheets.Delete Worksheets.Add(After:=Worksheets(1)).Name=sheetname Application.DisplayAlerts=True'開啟警告訊息 Else Worksheets.Add(After:=Worksheets(1)).Name=sheetname EndIf匯入合併資料'---------------------------------------------------- '匯入合併資料 '---------------------------------------------------- Windows("AAAA_Format_Macro.xlsm").Activate Sheets("Sheet1").Select Range("A1").Select WithActiveSheet.ListObjects.Add(SourceType:=0,Source:=_ "OLEDB;Provider=Microsoft.Mashup.OleDb.1;DataSource=$Workbook$;Location=AAAA_MergeExcel;ExtendedProperties="""""_ ,Destination:=Range("$A$1")).QueryTable .CommandType=xlCmdSql .CommandText=Array("SELECT*FROM[AAAA_MergeExcel]") .RowNumbers=False .FillAdjacentFormulas=False .PreserveFormatting=True .RefreshOnFileOpen=False .BackgroundQuery=True .RefreshStyle=xlInsertDeleteCells .SavePassword=False .SaveData=True .AdjustColumnWidth=True .RefreshPeriod=0 .PreserveColumnInfo=False .ListObject.DisplayName="AAAA_MergeExcel" .RefreshBackgroundQuery:=False EndWith 匯入樞紐表'樞紐分析表 ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,SourceData:=_ "AAAA_MergeExcel",Version:=6).CreatePivotTableTableDestination:=_ "AAAA_樞紐表!R1C1",TableName:="AAAA_0004",DefaultVersion:=6 Cells(1,1).Select ActiveSheet.Shapes.AddChart2(201,xlColumnClustered).Select ActiveChart.SetSourceDataSource:=Range("AAAA_樞紐表!$A$1:$C$18") 'x軸 WithActiveChart.PivotLayout.PivotTable.PivotFields("TxnTypeName") .Orientation=xlRowField .Position=1 EndWith '篩選 WithActiveChart.PivotLayout.PivotTable.PivotFields("TrxCost") .Orientation=xlPageField .Position=1 EndWith 'y軸 ActiveChart.PivotLayout.PivotTable.AddDataFieldActiveChart.PivotLayout._ PivotTable.PivotFields("TransactionQty"),"加總-TransactionQty",xlSum ActiveChart.PivotLayout.PivotTable.AddDataFieldActiveChart.PivotLayout._ PivotTable.PivotFields("TrxValue"),"加總-TrxValue",xlSum '刪除樞紐圖 ActiveChart.Parent.Delete  參考資料來源:https://blog.gtwang.org/programming/excel-vba-programming-workbook-worksheet-cell/5/  人生美好~別浪費腦容量記程式碼:-)  作者:CYL 出處:http://dotblogs.com.tw/cylcode 資料來源都會特別註明,有興趣都可查詢原出處,本站皆經過整理才分享,如有轉載請顯示出處及作者,感謝。

  ExcelVBA 回首頁 本頁段落  



請為這篇文章評分?