簡體   English   中英

如何檢測Excel vba中列值是否發生變化

[英]How to detect if change in column values in Excel vba

有沒有辦法找到列中是否有任何值小於允許的限制? 例如:我有一個 A 列,當對 B 列中的值進行任何更改時,該列具有可變數據。

我想設置約束,如果 A 列使 B 列中的任何值小於 7(通過增加或減少 A 列中的值),那么 A 列中的該值將被拒絕並且 A 列值不會進一步更新(增加或減少)。 最后一個值將被設置為最終值。

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

注意:A列中的值必須為正

示例 1:

請點擊此圖片鏈接,下面附有示例 Excel 表。

我只想要一種方法來調整 A 列中的值,以便 B 列值在允許的范圍內。 (即不低於 7 )。 這可以通過更改 A 列中的值然后檢查 B 列的所有行的允許限制來實現,為此我需要在每次更改值時循環遍歷 B 列中的每一行,這可能需要更多的處理時間(減速Vba)。 我需要在不循環的情況下實現這一點。

TIA

您可以嘗試像下面這樣的基於工作表的事件來捕獲 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM