使用用户表单删除多个工作表上的特定行

Deleting a specific row on multiple worksheets using a userform

我正在开发一种跟踪学生评估的工具,并使用用户表单来管理学生数据。

我已经根据对先前问题的回答编写了代码,以删除工作簿中包含各种学生数据的 14 个工作表上的同一行,但在 WshtNameCrnt.Rows(l).Delete 行出现 'Object required' 错误下面的代码:

Private Sub cmbDelete_Click()
    Dim WshtNames As Variant
    Dim WshtNameCrnt As Variant

    WshtNames = Array("Pupil Data", "RWM", "Art", "Computing", "Design Technology", "Geography", "History_", _
                        "MFL", "Music", "PE", "RE", "Science", "Bookbands", "KS1 - TRP")

    Dim msgResponse As String    'confirm delete
        Application.ScreenUpdating = False
            msgResponse = MsgBox("This will delete the selected record. Continue?", _
            vbCritical + vbYesNo, "Delete Entry")

    Select Case msgResponse    'action dependent on response

        Case vbYes
            Dim l As Long
            l = ActiveCell.Row 'store currently active cell row

                For Each WshtNameCrnt In WshtNames
                    WshtNameCrnt.Rows(l).Delete
                Next

        'restore form settings
        With Me
            .cmbAmend.Enabled = False    'prevent accidental use
            .cmbDelete.Enabled = False    'prevent accidental use
            .cmbAdd.Enabled = True    'restore use
            'clear form
            Call ClearControls
            Call ResortData
        End With

    Case vbNo
        Exit Sub    'cancelled
    End Select
    Application.ScreenUpdating = True
End Sub

我假设问题是我的工作表名称数组被标注为变体,但我不确定将其设置为对象并循环遍历数组中的工作表的最佳方法。

如果我的假设是正确的,请有人告诉我,suggest/show我如何解决这个问题?

WshtNameCrntWorksheet 的名称,而不是实际的 Worksheet 对象。

所以

WshtNameCrnt.Rows(l).Delete

使用 Worksheets 集合,它与 Worksheet 索引或 name 一起工作,到 return Worksheet有问题的对象。

ThisWorkbook.Worksheets(WshtNameCrnt).Rows(1).Delete

@BigBen 发现了问题和可能的解决方案

另一种解决方案是遍历 Worksheets 集合,其名称已收集到 WshtNames 数组

            For Each WshtNameCrnt In Worksheets(WshtNames)
                WshtNameCrnt.Rows(l).Delete
            Next

两种解决方案(和您的代码)都无法管理 sheet 名称与任何当前工作簿作品sheet不匹配的情况