自己很常用的語法紀錄
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 回傳文字字串中指定的的文字
======================================
請先 登入 以發表留言。