close

 

  • 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


  • 資料欄位變更時,自動更新其它欄位的方法
  1. 在VBA的編輯模式下,點選『View』-->『Project Expolrer』    
  2. 點選要處理的工作頁。
  3. Ever 選擇Change
  4. 貼上以下的程式碼

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


arrow
arrow
    文章標籤
    EXCEL EXCEL VBA
    全站熱搜

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