我想檢測是否正在從多個彼此不相鄰的單元格中洗掉文本/值,以便在發生這種情況時我可以執行例程。
以我的情況為例,如果文本已從這些單元格中洗掉,我想監視單元格 E5、E8、E11 和 E14。所以如果E5被洗掉了,我想執行子程式#1。如果 E8 已被洗掉,我想執行子程式 #2。子程式#1 和#2 是不同的。所有子程式都是獨一無二的,因為將 E5、E8、E11 和 E14 作為一個范圍來監控對我來說不起作用。
如果我向單元格添加文本,我不想執行例程 - 只有從單元格中洗掉內容才能觸發子例程。
我只能執行以下例程 - 它無法正常作業,因為它不會區分我是添加文本還是洗掉文本。我也不知道如何在不使用范圍的情況下監視多個單元格?
' Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$5" Then
MsgBox "hello"
End If
End Sub
有人可以指出我正確的方向嗎?
謝謝一堆。
uj5u.com熱心網友回復:
請嘗試下一個方法:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range: Set rng = Range("E5")
If Target.cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Union(rng, rng.Offset(3), rng.Offset(6), rng.Offset(9))) Is Nothing Then
If Target.Value = "" Then
Select Case Target.Address(0, 0)
Case "E5": Debug.Print "E5 is empty" 'mySubrutine1
Case "E8": Debug.Print "E8 is empty"
Case "E11": Debug.Print "E11 is empty"
Case "E14": Debug.Print "E14 is empty"
End Select
End If
End If
End Sub
它僅分析指定的單元格,并且僅在修改后的單元格為空時才執行某些操作。
它在選擇多個單元格的情況下退出。但是,它可以很容易地適應也接受多次洗掉。事實上,下一個變體應該能夠處理這種情況:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, C As Range: Set rng = Range("E5")
If Not Intersect(Target, Union(rng, rng.Offset(3), rng.Offset(6), rng.Offset(9))) Is Nothing Then
For Each C In Target.cells
If C.Value = "" Then
Select Case C.Address(0, 0)
Case "E5": Debug.Print "E5 is empty" 'mySubrutine1
Case "E8": Debug.Print "E8 is empty" 'mySubrutine2
Case "E11": Debug.Print "E11 is empty" 'mySubrutine3
Case "E14": Debug.Print "E14 is empty" 'mySubrutine4
End Select
End If
Next C
End If
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/390954.html
上一篇:加載影像時WPFUI性能影響
