关于Excel的宏的编写,高手进来帮忙。

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:33:44
想在Excel编写一个宏,里面对第2列的操作进行监控。

在第二列任意一个单元格的内容出现被更改的情况下,进行操作拦截(或者Undo恢复)。undo部分不成问题,问题是不知道怎样在Worksheet_Change过程里实现更具体地监控。

打个比方,更改内容我拦截,但是我又允许对表进行的插入或删除操作,例如:
If Target.Columns.Count = 256 Then
Application.EnableEvents = False '禁用Excel的事件响应
For Each Rnge In Selection
If Rnge <> "" Then Ept = False: Exit For
Next
If Ept = True Then GoTo qt
Application.Undo '先恢复已删除的行
Rw = Selection.Row & ":" & Selection.Row + Selection.Rows.Count - 1
r = Selection.Row
Rows(Rw).Hidden = True '隐藏恢复的行
If MsgBox("您正准备删除 " & Selection.Rows.Count & " 条记录。" & vbCrLf & vbCrLf & "如果单击“是”,将无法撤销删除操作。" & vbCrLf & "并将同步删除数据库内相应记录," & vbCrLf & "确实要删除这些记录吗?", vbYesNo + vbExclamation + vbDefaultButton2) = vbYes Then
OpenDB "select * from data"
For i = 1 To Selection.Rows.Count

这样的思路行不行,假如你这第二列的内容是固定不可变的,那它当中的某些单元格中的内容有没有是唯一的?即其它地方不会出现的?
比如在第一行
用Application.WorksheetFunction.Match("某固定内容", Rows("1:1"), 0)定位出你的这一列经过插入列等操作后,最新的列号.
这样就可以有针对性对此列进行保护了

在Worksheet_Change事件中添加

if target.column=2 then '判断更改是否出现在第2列
....
end if

不会