這是一個非常簡單,有限的例子。我們只監視包含公式的單元格B5。式檢索來自另一個工作表的日期:
在用於這個片我們安裝以下事件宏工作表代碼區:
Private Sub Worksheet_Calculate()
Dim Monitor As Range, Helper As Range
Dim rw As Long
Set Monitor = Range("B5")
Set Helper = Range("H5")
rw = Monitor.Row
Application.EnableEvents = False
If Helper.Value = "" Then
Helper.Value = Monitor.Value
Else
If Helper.Value <> Monitor.Value Then
Helper.Value = Monitor.Value
Range("C" & rw & ":E" & rw).ClearContents
End If
End If
Application.EnableEvents = True
End Sub
代碼使用細胞H5爲「助手「代碼第一次運行時,輔助單元被填充。每一次之後,代碼比較「助手」對H5。如果他們變得不同,細胞Ç該行通ê被清除。
因爲它是工作表的代碼,這是非常容易安裝和自動使用:
- 右鍵單擊靠近Excel窗口底部的標籤名稱
- 選擇查看代碼 - 這帶來了一個VBE窗口
- 粘貼的東西並關閉VBE窗口
如果您有任何問題,首先嚐試在一個審判工作。
如果保存工作簿,宏將與其一起保存。 如果您在2003年以後使用的是Excel版本,則必須將該文件保存爲.xlsm而非 。XLSX
要刪除宏:
- 彈出VBE窗口如上
- 清晰的代碼進行
- 關閉VBE窗口
要了解更多關於宏一般,參見:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解更多有關事件宏(工作表的代碼),請參閱:
http://www.mvps.org/dmcritchie/excel/event.htm
宏必須爲此工作啓用!
編輯#1:
完全拋棄原來的宏和安裝這一個,而不是:
Private Sub Worksheet_Calculate()
Dim Monitor As Range, Helper As Range
Dim rw As Long, r As Range
Set Monitor = Range("B2:B100")
Set Helper = Range("H2:H100")
Application.EnableEvents = False
For Each r In Helper
If r.Value = "" Then
r.Value = r.Offset(0, -6).Value
End If
Next r
For Each r In Helper
If r.Value <> r.Offset(0, -6).Value Then
r.Value = r.Offset(0, -6).Value
rw = r.Row
Range("C" & rw & ":E" & rw).ClearContents
End If
Next r
Application.EnableEvents = True
End Sub
正如你看到的,我們必須遍歷的範圍內的每個項目。
查看Worksheet_Change事件及其Target參數。 –
@Doug Glancy這是我做的,但它不工作,直到手動更改C列中的日期2工作表Private Sub Worksheet_Change(ByVal目標作爲範圍) 如果不相交(目標,範圍(「b1:b100」))然後 細胞(Target.Row,3)= 「」 細胞(Target.Row,4)= 「」 細胞(Target.Row,5)= 「」 結束如果結束 子 –
由於日期中列** B **通過*公式輸入*您需要使用* Calculate *事件來捕捉更改。 –