开发者社区> 问答> 正文

根据2个条件从表中删除行(1个条件工作),怎么做呢?

此代码在模块内部,当我选择一个单元格然后按下我的按钮“删除注释”时它被激活。我试图写这个是不断的错误所以我转向谷歌并尝试了别人的方法,使用过滤,但它不会工作,我不喜欢它如何激活包含表格的表格,所以我给了它另一个去写我自己的代码,让它几乎工作。

如果我更改此行:

If .DataBodyRange.Cells(Counter, .ListColumns("Name").Index) = EmployeeName And .DataBodyRange.Cells(Counter, .ListColumns("Date").Index) = SelectedDate Then .ListRows(Counter).Delete 对此,然后宏工作但显然删除了与该日期相关联的所有名称而不是工作表“日历”中单元格“B3”中的名称

If .DataBodyRange.Cells(Counter, .ListColumns("Date").Index) = SelectedDate Then .ListRows(Counter).Delete 如果我将其更改为此,我会收到类型不匹配错误

If .DataBodyRange.Cells(Counter, .ListColumns("Name").Index) = EmployeeName 完整代码如下

Dim Counter As Integer, EmployeeName As Integer, LastRow As Integer, SelectedDate As Date


If Intersect(ActiveCell, range("D12:AS23")) Is Nothing Then
    MsgBox "Please select a date.", , "Error"
    Exit Sub
Else
    If Sheets("Settings").range("Protected") = 2 Then
        With Sheets("Calendar")
            SelectedDate = Cells(ActiveCell.Row, 2) - 1 + ActiveCell.Value
            EmployeeName = range("B3")
        End With
        With Sheets("Notes").ListObjects("TblNotes")
            LastRow = .range.Rows.Count
            For Counter = LastRow To 1 Step -1
            If .DataBodyRange.Cells(Counter, .ListColumns("Name").Index) = EmployeeName And .DataBodyRange.Cells(Counter, .ListColumns("Date").Index) = SelectedDate Then
                .ListRows(Counter).Delete
            End If
            Next Counter
        End With
    Else
        'do nothing
    End If
End If

展开
收起
被纵养的懒猫 2019-09-17 16:47:02 641 0
0 条回答
写回答
取消 提交回答
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载