- Refresh excel工作簿的所有報表
ThisWorkbook.RefreshAll
- 回傳星期幾
Workday = Application.Evaluate("WEEKDAY(TODAY())-1") 'Application.Evaluate這個好東西可以讓EXCEL裡面的函數執行,weekday()會回傳今天是一個星期的第幾天,-1是因為weekday內定星期日是第一天
- 回傳第幾週
週別= Application.Evaluate("WEEKNUM(TODAY())")
- 用Outlook寄郵件
Set Outapp = CreateObject("Outlook.application")
Set Outmail = Outapp.CreateItem(0)
Set MyAttachments = Outmail.Attachments
With Outmail
.To = ToWho
.CC = ToWhoCC
.Subject = YTMailSubject
MyAttachments.Add "C:\【自動化】\已上線\自動郵件-Chroma S50 Tester 工程預借機提醒\借機表格.xlsx"
.HTMLBody = YTMailBody & Signature
'.Body = YTMailBody
.Send ' 寄出
'.Display ' 只顯示
End With
- 計算某欄最後一筆資料的位置
Dim I As Integer
I = Sheets("收件人").Range("B2").End(XIDirection).Row ' 用此方法可以得知該欄共有幾筆資料。
XIDirection:xlDown (向下)、xlToleft(向左)、xlToRight(向右)、xlUp(向上)
- 字串連結
YTMailSubject = "【 請提供" & X月份 & "月報 】- R400自動郵件" & " - " & Date ' 字串連結用 & 符號
- 字串處理
Dim 年度出現的位置 As Integer
年度出現的位置 = InStr(週報檔案名稱, "_20") ' 從週報檔案名稱中 找到"_20"的位置
- 時間處理
Dim X月份 As String
X月份 = Month(Date) ' 回傳月份
Dim 今天日期 as String
今天日期 = Date
明天日期 = Date + 1
昨天日期 = Date -1
- 副程式 Subroutine
Sub 自動排借機系統()
清空欄位
填入量產機台
填入PM機台
Q100工程需求
Q400工程需求
End Sub
' 副程式引用時,直接寫上副程式的名稱即可
Sub 清空欄位
XXXXXXXXXXXXXXXX
End Sub
- 選擇表單
Sheets("借機單-原始").Select
- 抓取目前的檔案名稱
Dim 週報檔案名稱 As String
週報檔案名稱 = Application.ActiveWorkbook.Name
- 選擇欄位
Cells.Select
Range("A3").Select
- 視窗處理
#選擇視窗 #選擇某一個檔案 Windows("Weekreport_33.xls").Activate
#關閉視窗 Windows("Weekreport_33.xls").Close false ' false為不詢問
★邏輯判斷
- For迴圈
For N = 1 To 7
If ActiveCell.Offset(0, 4 + N).FormulaR1C1 <> "" Then
借機單位 = ActiveCell.Offset(0, 4 + N).FormulaR1C1
N = 500 '跳出迴圈
End If
Next N
- While迴圈
While ActiveCell.FormulaR1C1 <> ""
機台組名稱 = ActiveCell.Text
If 機台組名稱 = "CMA3650" Then
需求數量_CMA3650 = 需求數量_CMA3650 + 1
End If
ActiveCell.Offset(1, 0).Select
Wend
- 邏輯判斷 - if
If 可借機台狀況 = 1 And (需求數量_CMA3650 > 0) Then
ActiveCell.Offset(0, 3).Select
ActiveSheet.Paste
需求數量_CMA3650 = 需求數量_CMA3650 - 1
ElseIf 可借機台狀況 = 2 And (需求數量_CMA3650 > 0) Then
ActiveCell.Offset(0, 5).Select
ActiveSheet.Paste
需求數量_CMA3650 = 需求數量_CMA3650 - 1
ElseIf 可借機台狀況 = 0 Then
N = N - 1
End If
- 邏輯運算子
<> ' 不等於, Not
= ' 等於,
- Offset
ActiveCell.Offset(0, 1).select
- 換行符號
Chr(10)
- 開啟Excel後,自動執行巨集
你可以進入Visual Basic編輯器後,在左上方的專案欄位找到"This Workbook"的物件,點開後注意看編輯區上方,左邊的選單(預設值通常為「一般」)拉出「Workbook」,然後直接在此新增一個巨集:
Private Sub Workbook_Open()
call test_macro
End Sub
- Data Validation 增加項目
ActiveCell.Offset(0, -2).Select
維修人員數量 = Sheets("維修人員").Range("A:A").End(xlDown).Row
維修人員名單 = "=維修人員!$" & "A2:$" & "A" & "$" & (維修人員數量)
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=維修人員名單
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
- 資料欄位變更時,自動更新其它欄位的方法
- 在VBA的編輯模式下,點選『View』-->『Project Expolrer』
- 點選要處理的工作頁。
- Ever 選擇Change
- 貼上以下的程式碼
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("$A$2:$A$65535")) Is Nothing Then ' 範圍如紅色區域
Call 依機台組選擇機台編號
End If
End Sub
- 檢查檔案是否存在
Dim F As Boolean
Dim TEST As String
Dim K As Integer
TEST = ThisWorkbook.Path
F = CreateObject("Scripting.FileSystemObject").FileExists(TEST & "\可執行巨集.txt") '確定有這個檔案,才會去執行
If F = True Then
Call 抓取當月份的課程名稱稱 '沒有打錯,就是有兩"稱"
Application.Quit
End If
留言列表