2017-10-21 89 views
-1

有什麼方法可以查找列中的任何值是否小於允許的限制? 例如: 我有一個塔A進行任何更改影響的值在列B時如何檢測Excel中列值是否發生變化vba

我想要設置的約束,其具有可變的數據,使得如果列A中B欄進行任何值小於7(由增加或減少列A中的值),那麼列A中的值將被拒絕,並且列A值將不會進一步更新(增加或減少)。最後的值將被設置爲最終值。

所以這裏的概念是循環遍歷列A中的每一行,並嘗試增加或減少值,直到條件滿足。

注:A列中的值必須是正

實施例1:

Please follow this image link 樣品練成片下方安裝。

我只是想調整列A中的值,以便列B值在允許的限制。 (即不低於7)。這可以通過更改列A中的值,然後檢查列B的所有行以獲得允許的限制來實現,以實現此目的,我需要在每次更改值時循環遍歷列B中的每一行,這可能需要更多處理時間(減慢VBA)。我需要實現這個沒有循環。

TIA

+0

樣品從谷歌驅動器excel文件:https://drive.google.com/file/d/0B4kHDh74X1b6Vng0d282WVRWOXc/view – Hola

+0

爲什麼不使用 「數據有效性」? – Maldred

回答

1

你可以嘗試建立基於表的事件像下面來捕捉變化列A發生右鍵單擊要做到這一點並粘貼下面的代碼表標籤上。 在備份上進行測試。

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim rng As Range, rngLast As Range 
    If Target.Column = 1 Then 
     Set rngLast = Cells.Find("*", [A1], xlFormulas, xlWhole, , xlPrevious) 
     Application.EnableEvents = False 
     For Each rng In Range("B2:B" & rngLast.Row) '\\ Adjust Start Row of Column B 
      If rng.Value < 7 Then 
       MsgBox "Value going below specified limit!", vbExclamation 
       Application.Undo 
      End If 
     Next 
     Application.EnableEvents = True 
    End If 
    End Sub 
+0

感謝您的解決方案,我如何在模塊中使用它? – Hola

+0

@Hola不,如果您的意思是一個通用模塊,則該事件由特定工作表組件觸發。 –

+0

是否有其他解決方案? – Hola

相關問題