自動累加的程式在儲存格合併後確不能用了

請教各位VBA高手,以下的程式是我工作用來做儲存格自動累加的,但因為表格做了一些改變,就是把儲存格合併成5合1,可是還是在我設的範圍內為什麼不能

用了呢?是不是要做部分的修改呢/願請各路VBA高手幫幫忙,謝謝!!

Private EhNum, EhChkPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)If Selection.Cells.Count > 1 Or EhChk Then Exit SubIf Not Application.Intersect(Target, Range("I3:K642")) Is Nothing ThenEhNum = Val(Selection)End IfEnd SubPrivate Sub Worksheet_Change(ByVal Target As Range)If Selection.Cells.Count > 1 Or Not IsNumeric(Target) Then Exit SubIf EhChk Or Target = "" Then EhChk = 0: Exit SubIf Not Application.Intersect(Target, Range("I3:K642")) Is Nothing ThenEhChk = 1: Target = Target +EhNum: Selection.Offset(-1).SelectEnd IfEnd Sub

1 個解答

評分
  • 9 年前
    最佳解答

    EXCEL VBA.在〔合併儲存格〕輸入數字〔自動累加〕

                            <.准提部林.>

    ---------------------------------

    範例檔功能簡介: 

    ■主要需求:

     在指定區域的儲存格皆以〔每5列〕合併為一個輸入格,

     當輸入新數字時,與其原來數字〔累加〕,

     例如:原數字為 5,當再直接輸入 6 時,自動累加為 11。

     

    ■程式碼:請複製至〔工作表〕程式碼區(非模組)

     <頂端宣告>

     Dim MyRng As Range, MyVal

     

     <當選取指定輸入範圍時,記錄儲存格及其原值>

     Private Sub Worksheet_SelectionChange(ByVal Target As Range)

     Set MyRng = Nothing: MyVal = 0

     If Target.Columns.Count > 1 Then Exit Sub

     If Target.Row < 3 Or Target.Row > 642 Then Exit Sub

     If Target.Column >= [I1].Column And Target.Column <= [O1].Column Then

       Set MyRng = Target.Item(1)

       MyVal = Val(MyRng.Value)

     End If

     End Sub

     

     <儲存格變動後,自動累加>

     Private Sub Worksheet_Change(ByVal Target As Range)

     If Target.Column >= [I1].Column And Target.Column <= [O1].Column Then

      If Target.Row < 3 Or Target.Row > 642 Then Exit Sub

      If MyRng Is Nothing Then Exit Sub

      If MyRng.Value = "" Then MyVal = 0: Exit Sub

      '如果清除儲存格內容,即視為歸0而保持空格

      '但仍可使用〔還原〕恢復原來數值

      Application.EnableEvents = False

      [J1] = MyRng.Address(0, 0): [K1] = MyVal

      '記錄上一次更動儲存格位址及原值

      MyRng.Value = Val(MyRng.Value) + MyVal

      Application.EnableEvents = True

     End If

     End Sub

     

    ■程式碼:

     1.當使用〔Delete〕清除儲存格內容時,還可使用〔還原〕功能

       回復原值。

     2.但已輸入新值而按了〔Enter〕,或移離該儲存格時,程式則

       自動執行累加,無法再使用〔還原〕功能,所以,使用時須

       謹慎為之。若發現輸入錯誤,只要按〔ESC〕取消即可。

     3.本範例特加入在〔J1〕及〔K1〕記錄上一步更動的儲存格位址

       及其原值,若有錯誤即可將原值貼回,但僅能防錯一次。

    ---------------------------------

    <範例檔>:

    http://www.funp.net/275757

    ---------------------------------

還有問題?馬上發問,尋求解答。