我处于一个Worksheet
上的列需要跟踪另一个Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Target.EntireRow.Address Then
Debug.Print Target.Address
Sheet2.Range("A1").Offset(, Target.Row - 1).EntireColumn.Delete
End If
End Sub
上的行的情况。因此,如果用户删除了一列(必须允许他们这样做),我需要删除另一个工作表中的相应行。这很好,下面的代码完成了任务。
Sheet2
但是,当用户插入行时,同样的代码会运行,而实际上我需要在这种情况下向export default React.createClass({
renderList(nodes) {
const list = [];
for (const k in nodes){
let val = nodes[k];
let children = val.children;
let content = val.content;
list.push(<li key={k} id={k} content={content} />);
}
return list;
}
render() {
let nodes = JSON.parse(this.props.nodes)
return (
<ol>
{ this.renderList(nodes) }
</ol>
);
}
});
添加一行。如何在行采取行动时判断用户是在插入还是删除?
答案 0 :(得分:3)
由于我无法将其添加为评论,我相信这是already answered here
基本上,您将定义范围名称,然后在Worksheet_Change
上调用该范围名称。根据范围是否移动以及方向,您应该能够确定是否已添加或删除列,然后进行相应处理。
来自上面链接帖子的Brettdj代码(对于行,但很容易对列进行更改):
您可以定义范围名称,例如RowMarker =$A$1000
Private Sub Worksheet_Change(ByVal Target As Range)
Static lngRow As Long
Dim rng1 As Range
Set rng1 = ThisWorkbook.Names("RowMarker").RefersToRange
If lngRow = 0 Then
lngRow = rng1.Row
Exit Sub
End If
If rng1.Row = lngRow Then Exit Sub
If rng1.Row < lngRow Then
MsgBox lngRow - rng1.Row & " rows removed"
Else
MsgBox rng1.Row - lngRow & " rows added"
End If
lngRow = rng1.Row
End Sub