2018年12月4日 星期二

VBA:EXCEL 管理規則導入應用(檢查票防呆機制建立)(FormatConditions)

故事起源:
這段時間產品出貨的隨附檢查票(又稱COA)居然發生一件天大的慘案!!

慘案!慘案!慘案!(因為被客戶追殺所以重複了3次),有鑒於於此所以到製造現場了解為

何會發生這類的事,經過教育訓練老師過去的指導,透過三現主義(現時、現地、現況)作掌握

後,原因就是人沒確認檢查票就給他蓋章出貨了,故事到此為止後文就不提了。 為了避免再

發,小小的我就發現檢查票是用EXCEL製作跟維護的,就立馬寫了管理規則,透過管理規則

導入上下限的防呆機制,也進一步建立資料為文字與數字的判斷機制。但是!!!算一算近X千張

客製化檢查票ㄝ,怎可能一張一張建立阿。 開始思考使用EXCEL 內建的VBA來建立管理規

則得念頭,鑽研了一段時間,發現這類文章,尤其是中文的資料有點少,當然單純手動新增

管理規則的文章就超多,所以筆者決定透過本篇文章的記錄作分享。

物件:RANGE
屬性:FormatConditions
方法:FormatConditions.ADD

 MSDN 原文 1.管理規則寫入公式:(2個例子)
1.1公式
 ActiveSheet.Range(儲存格位置).FormatConditions.Add Type:=xlExpression, Formula1:="=" & 公式 
ActiveSheet.Range(儲存格位置).FormatConditions(1).Interior.ColorIndex = 3 '我是設定公式成立時反紅
1.2引用EXCEL函數
 ActiveSheet.Range(儲存格位置).FormatConditions.Add Type:=xlExpression, Formula1:="=" & EXCEL函數

 ActiveSheet.Range(儲存格位置).FormatConditions(1).Interior.ColorIndex = 3 

2.管理規則寫入格式化內容:
2.1 不介於(參數設定:xlNotBetween)
 ActiveSheet.Range(R1).FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, Formula1:=10, Formula2:=20

 ActiveSheet.Range(R1).FormatConditions(1).Interior.ColorIndex = 3

看到此,有沒有一種脫褲子放屁的感覺,VBA寫好了,怎導入?該不會還是要手動建立吧!!!等等這樣的疑問產生。 其實僅有導入管理規則的VBA CODE是不夠的歐,還需要配合檔案開啟等等的VBA指令才能滿足"自動建立的目標"。
 
再請參筆者文章:


EXCEL 開啟檔案 VBA (一) FileDialog應用

開啟EXCEL 開發人員教學:ONEDRIVE 下載

 透過上列網址文件教學,我們可以在"命令按鈕"中貼入以下 VBA CODE。

 Dim FILE_OPEN As FileDialog '宣告FILE_OPEN為檔案對話框

 Set FILE_OPEN= Excel.Application.FileDialog(msoFileDialogFilePicker) '設定FILE_OPEN為選取檔案功能 

補充說明:"msoFileDialogFilePicker"指選取檔案若要選取資料夾請改
為"msoFileDialogFolderPicker "

FILE_OPEN.InitialFileName = Excel.ActiveWorkbook.Path '對話框開始目錄的設定

FILE_OPEN.Filters.Add "Excel File", "*.xls*" '設定對話框要顯示的副檔名

 FILE_OPEN.Filters.Add "所有檔案", "*.*" FILE_OPEN.Show '顯示對話框

圖1.對話框產生

但僅僅這樣還不夠,還需要以下的VBA CODE 才能開啟檔案歐

 For i = 1 To FILE_OPEN.SelectedItems.Count

 Source = Excel.ActiveWorkbook.NAME '儲存目前作業中檔案名稱

 FILE_OPEN_PATH = FILE_OPEN .SelectedItems(i) '取的檔案路徑

 Workbooks.Open Filename:=FILE_OPEN_PATH '開啟案路徑

 WORKNAME = Excel.ActiveWorkbook.NAME '儲存新開檔案的檔案名稱

 Windows(WORKNAME).Activate '啟用新開檔案的檔案名稱

 Windows(Source).Activate '啟用目前作業中檔案名稱

 NEXT I

 完整版:


功能說明:透過對話框打開一個或多個檔案後,自動開啟檔案,制於要開啟檔案作那些"加工",就看需求作增加了。

我的雷達:20240506

自己紀錄給自己看。 在大跌1400多點後,拉回中。 雷達顯示遠離風險區但離前一個底(大盤高點也不遠了)