2017-02-02 52 views
0

我有一個數據集(如下所示),應始終等於100:更新5個值來總結一個具體的數字

enter image description here

如果我改變價值觀之一,我希望旁邊的值它將被調整爲總數仍然是100.不幸的是,當我更改任何數字時,我的代碼不會更新數字上下的數字。另外,該子程序不返回錯誤。有什麼建議,爲什麼會這樣?

Sub Worksheet_Change(ByVal Target As Range) 

     If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub 
     If IsNumeric(Target) Then 
      If Application.WorksheetFunction.Sum(Cells(1, Target.Column), Cells(5, Target.Column)) <> 100 Then 

       If Target.Row > 1 Then 
        Cells(Target.Row - 1, Target.Column).Value = Cells(Target.Row - 1, Target.Column).Value + 100 - Application.Sum(Cells(1, Target.Column), Cells(5, Target.Column)) 
       Else 
        Cells(Target.Row + 1, Target.Column).Value = Cells(Target.Row + 1, Target.Column).Value + 100 - Application.Sum(Cells(1, Target.Column), Cells(5, Target.Column)) 
       End If 

      End If 
     End If 
    End If 

    End Sub 

感謝您的幫助!

+2

子應該不會編譯。你最後還有一個額外的「結束」。 – Comintern

+2

我編輯了你的問題來應用你的代碼的一致縮進。正如@Comintern所說,你有一個太多的'End If'語句,正如最後的'End If'不能縮進到適當的級別所證明的那樣。 (你的第一個'If'語句是一個「單行If」,因此不應該有與它關聯的'End If')。 – YowE3K

回答

2

你有幾個問題:

  1. 作爲共產國際在評論中指出,你有沒有被匹配到IfEnd If。 (你可能預期其用於單行If,但單線If■不要需要一個End If

  2. 你不從,而你的代碼運行時發生的事件禁用,這可能導致怪異當你從你的代碼發起另一個改變時發生的事情。 (主要是隻會是一個問題,當第一次設置的值。)

  3. Sum功能僅在行1添加數字和5

一個重構你的代碼將是版本如下:

Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub 
    Application.EnableEvents = False 
    If IsNumeric(Target) Then 
     If Application.Sum(Range(Cells(1, Target.Column), Cells(5, Target.Column))) <> 100 Then 

      If Target.Row > 1 Then 
       Cells(Target.Row - 1, Target.Column).Value = Cells(Target.Row - 1, Target.Column).Value + 100 - Application.Sum(Range(Cells(1, Target.Column), Cells(5, Target.Column))) 
      Else 
       Cells(Target.Row + 1, Target.Column).Value = Cells(Target.Row + 1, Target.Column).Value + 100 - Application.Sum(Range(Cells(1, Target.Column), Cells(5, Target.Column))) 
      End If 

     End If 
    End If 
    Application.EnableEvents = True 
End Sub 
+0

非常感謝你的幫助@YowE3K。奇蹟般有效 :) –

相關問題