自己很常用的語法紀錄

MsgBox ("完成")    '當系統批次處裡的量很多  有時候不知道系統執行完成 就可以用這個東西(執行顯示條...等我有心情再去研究)

ThisWorkbook.Path    '讀取執行VBA檔案儲存位置

Application.ScreenUpdating = False   '只在背景執行視窗
Application.ScreenUpdating = ture    '開啟顯示執行視窗

Application.DisplayAlerts = False        '不顯示不儲存 直接離開提示
Application.DisplayAlerts = True            '顯示不儲存 直接離開提示

WorksheetFunction.CountA(Columns(1))      '計算第一欄不是空白的儲存格數
                                                                        基本上要用到EXCEL內的函數就是前面加"WorksheetFunction."
========================================================================

For Each WS In ActiveWorkbook.Sheets          'for each 將搜尋到第一個sheet(WS)提出來
WS.Copy                                                               'WS複製
Application.ActiveWorkbook.SaveAs Filename:=twb & WS.Name & ".xlsx"                      '將提出sheet另外儲存
Application.ActiveWorkbook.Close False                                                                              '關閉作用中(儲存好的)關閉
Next                                                                                               '尋找下一個sheet

這個用在要給每個員工薪資條(年終)的時候...還滿好用的
只要是一個表要分割,然後再將分割的內容,拉出變成單獨檔案
===========================================

path1 = twp & "\*.*"                                   
file1 = Dir(path1): r = 1
Do While file1 <> ""


file1 = Dir '取得下一個檔名
Loop

這個真的很好用,但是有限制....
只能用在資料夾不更新時候
舉例來說
我在C:\新資料夾\A  底下放了10個檔案
利用上述VBA 
若將"回存"在C:\新資料夾\A    那這VBA就執行無限迴圈 不會停止
若要使用這個  必須將完成的東西  存在在C:\新資料夾\B

=====================================

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then
        Cells(Target.Row, "C") = "=MID(B" & Target.Row & ",5,2)"
                
    End If
End Sub

第一行 開啟VBA的工作頁面 並選擇對應的工作表將"一般"和"宣告" 改選擇worksheet和selection change
target  是代表你選擇的那個儲存格有改變
column 是代表欄位
那Target.Column = 2  是指第2欄(B欄)有改變
Target.Row  是指改變的儲存格列數
MID  回傳文字字串中指定的的文字

======================================

 

創作者介紹
創作者 心の日記 的頭像
future0613

心の日記

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