2018年4月2日 星期一

VBA在管理系統的運用實例(三)

接上月的內容,管理系統最主要的功能是可以做各種需要的資料查詢,如果發現輸入的資料有問題,就會需要做資料修改。同樣的操作介面,我們今天來做資料修改的程式,近期都會有網友提出討論,若有問題,我們持續做進一步的探討,還是一樣,可以私訊、文章下留言、MAIL或SKYPE等,希望更多有興趣的朋友加入:


Sub 工程的資料修改()
Application.ScreenUpdating = False
Dim Message, Title, Default, CheckSame
Dim i, j, k, ir, ic As Long
Dim m0, cif, last As Long
Dim rsf, rc, rs, rt As Long
Dim y, m, d1, d2, n, s, t As Variant
Dim d As Date
Dim r As Long
Sheets("工程").Select
ActiveSheet.Unprotect Password:="*****"
Cells(1, "N") = "資料修改"
s = Cells(22, "G")
m0 = Cells(2, "G")
If s = "" Then
    MsgBox "請先查詢資料!"
Else
If m0 < 1 Then
    MsgBox "資料庫無 ( " & s & " ) 的工程單號資料!"
Else
If Cells(23, "G") <> Cells(2, "R") Then
    MsgBox "工程名稱不可修改!"
Else
If Cells(23, "I") = "" Then
    MsgBox "客戶編號須有資料!"
Else
    r = MsgBox("要修改 ( " & s & " ) 的資料?", _
        vbQuestion + vbOKCancel, "確認進行修改")
      If r = vbOK Then
        Sheets("工程資料").Visible = True
        Sheets("工程").Select
     '如果使用函數導至K欄
        Range("Q1:Q6").Copy
        Sheets("工程資料").Select
        Cells(m0, "A").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True
        Sheets("工程資料").Visible = xlVeryHidden
 '以預設範圍複製貼上,使用者可能從別處貼過來,復原
        Sheets("工程").Select
        Range("E7:J10").Copy
        Range("E22").Select
        ActiveSheet.Paste
        Cells(2, "N") = "資料修改"
            MsgBox s & " 資料已修改!"
      Else
        MsgBox "修改取消", _
            vbInformation + vbOKOnly, "使用者取消修改動作"
      End If
End If
End If
End If
End If
Sheets("工程").Select
Application.CutCopyMode = False
ActiveSheet.Protect Password:="*****"
Range("A3").Select
End Sub