2017年2月6日 星期一

VBA: 常用功能

## Application 級的功能
  ' 執行時停止螢幕異動
  Application.ScreenUpdating = False

## 目前工作資料取得
  ' 取得目前活頁簿的工作目錄及名稱
  ActiveWorkbook.Path
  ActiveWorkbook.Name
  ' 取得目前執行VBS的活頁簿其工作目錄及名稱
  ThisWorkbook.Path
  ThisWorkbook.Name

  ' 取得活頁簿的工作目錄(檔案路徑)
  strNowPath = Excel.ActiveWorkbook.Path
 
  ' 取得目前工作頁的名稱
  szName = ThisWorkbook.ActiveSheet.Name
  ' 取得目前資料格的 row 值
  endRow = ActiveCell.Row
  ' 取得 VBA 程式所在工作表內特定工作表的資料格內容
  A = ThisWorkbook.Worksheets(strNameSheet).Cells(1, 1)

## 指定目前的有效視窗
  Windows("D:\test\myfile.xls").Activate

## 新增指定名稱的工作表
  Sheets.Add().Name = "TestOK"
  Worksheets.Add(After:=Worksheets("ReadMe")).Name = "MySheet"

## 取得目前所有工作表的名稱
方式一
  For Each thisSheet In Sheets
    thisSheet.Name  的內容即為工作表名稱
  Next thisSheet
方式二
  For i = 1 To Worksheets.Count
    Worksheets(i).Name 的內容即為工作表名稱
  Next

## 刪除作用中的工作表
  '關閉警告視窗
  Application.DisplayAlerts = False
  '刪除作用中的工作表
  ActiveSheet.Delete
  '恢復警告視窗
  Application.DisplayAlerts = True
 

## 與工作表相關的指令
  ' 設定工作表是否可見
  Worksheets(toSheet).Visible = True
  ' 設定為作用中的工作表
  Worksheets(toSheet).Activate
  ' 選取工作表
  Worksheets(toSheet).Select
  ' 刪除工作表資料內容
  Worksheets(toSheet).Cells.Delete
  ' 選取目前活動工作表所有資料格並複製到剪貼簿
  ActiveSheet.Cells.Select
  Selection.Copy
  ' 將前項剪貼簿內容貼到目前活動工作表資料格內
  ' 請注意複製與貼上所選取的範圍宜相同
  ActiveSheet.Cells.Select
  ActiveSheet.Paste
  ' 設定欄寬
  Columns("A:A").Select
  Selection.ColumnWidth = 20
  或
  Columns("A:A").ColumnWidth = 20
  ' 隱藏工作表
  Worksheets("mySheet").Visible = False

## 讀取或設定資料格的方式
  m_year1 = Worksheets("Setting").Cells(5, 2)
  Worksheets("Setting").Cells(5, 2) = 1234
  ' 設定資料格內容為公式
  Sheets("總表_每日").Cells(myRow, 2).Formula = "=DSUM(DB_Open!$A:$E,5,$" & col(ii - 1) & "$2:$" & col(ii - 1) & "$3)"


## 找到有資料列的最後一列
  Range("A65530").Select
  '跳到該欄最後一列有資料的地方
  Selection.End(xlUp).Select
  'endRow 為最後一列有資料的列數
  endRow = ActiveCell.Row

沒有留言:

張貼留言