我目前正在修改一个重度模式的Excel计划工作簿。我有治疗师列表主列表(治疗师选择表),当选中复选框并按下魔术按钮时,我想在列表中检查指定范围内目标表(所有治疗师)中的名称。
如果治疗师已经取消检查,那么程序会删除这些行的必要数据并对所有内容进行排序。那部分工作正常。
接下来我希望程序在下一个开放位置放置已经存在的名称。我试图通过首先用using namespace
填充所有带有检查名称的名称来做到这一点。
如果程序发现重复,我将其从数组中删除。然后当它完成删除重复时,它循环遍历名称并打印列中的第一个单元格中的每个单元格(所有空单元格都变为连字符)。
我无法让它发挥作用。我一直在
运行时错误-2146233079 80131509
有没有人看到更好的方法来解决这个问题?或者至少看看我哪里出错了?
第一个子调用第二个子进行清除和排序:
ArrayList
修改后的电子表格:
带有复选框的表单:
答案 0 :(得分:0)
Private Sub AddDailyTherapists(PasteToRange As range, TrueFalseRange As range, StartCell As range, SortRange As range)
'
Call ClearUnselectedTherapists(PasteToRange, TrueFalseRange, StartCell, SortRange)
Dim Names(0 To 11) As String
i = 0
For Each cel In TrueFalseRange
If cel.value = True Then
Names(i) = cel.Parent.Cells(cel.Row, 4).value
i = i + 1
End If
Next cel
For Each n In PasteToRange
For j = 0 To UBound(Names)
If Names(j) = n.value Then
Names(j) = ""
End If
Next j
Next n
StartCell.Activate
For k = 0 To UBound(Names)
Do While (ActiveCell.value <> "-")
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
Loop
If Names(k) <> "" Then
ActiveCell.value = Names(k)
End If
Next k
End Sub