此代码在模块内部,当我选择一个单元格然后按我的按钮“删除便笺”时,它将被激活。我在尝试写此代码时遇到了不断的错误,所以我转向Google并尝试了使用过滤的其他人的方法,但是它不起作用,而且我不喜欢它如何激活包含表的表,所以我给了它另一个去写我自己的代码并使它几乎可以工作。
如果我更改此行:
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
答案 0 :(得分:1)
好吧,所以我要做的就是将dim EmployeeName As Integer更改为dim EmployeeName as String,其他所有方法都可以正常工作:)。有人可以向我解释为什么解决此问题吗?我非常擅长使用反复试验来解决问题,但实际上我不知道为什么这可以解决问题。