由细胞选择触发的宏

时间:2017-01-23 18:49:21

标签: excel-vba vba excel

我有一个宏'Edit_Row',它将活动行中的值带入UserForm进行编辑。此宏由另一个宏调用,该宏通过在表的列B中选择适当行的单元格来触发:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Count = 1 Then
    If Not Intersect(Target, Range("B3:B9999")) Is Nothing Then
        Call Edit_Row
    End If
End If
End Sub

这是按预期工作的,除了这个宏在表格上进行排序时也被激活的事实。我能做些什么来达到相同的结果(没有这些误报)?

1 个答案:

答案 0 :(得分:1)

假设您的表格Range包含第3行中的标题,请尝试以下操作:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tbl As ListObject
Set tbl = Me.ListObjects("Table1")  'Modify using your table's Name

If Target.Cells.Count <> 1 Then Exit Sub

If Not Intersect(Target, tbl.DataBodyRange.Columns(2)) Is Nothing Then
    Call Edit_Row
End If

End Sub

注意:如果您的表格不在A栏中开头,请将.Columns(2)修改为.Columns(1)

这应该起作用的方式是检查Selection是否属于表DataBodyRange的一部分,var results = []; var categories = []; async.parallel({ results: function(callback) { const query2 = client.query('SELECT * FROM entries ORDER BY id desc'); query2.on('row', (row) => { results.push(row); }); query2.on('end', () => { callback(null, results); }) }, categories: function(callback) { const query3 = client.query('SELECT * FROM categories ORDER BY id desc'); // Stream results back one row at a time query3.on('row', (row) => { categories.push(row); }); query3.on('end', () => { callback(null, categories); }); } }, function(err, results) { if (err) { return res.send(err); } return res.render('index2.ejs',{"results" : results, "categories" :categories}); }); 排除了标题行。