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

我已基于对先前问题的回答编写了代码,以删除工作簿中14个工作表上的同一行,该工作表上包含各种瞳孔数据,但在WshtNameCrnt.Rows(l).Delete处收到``Object required''错误。下面代码中的WshtNameCrnt.Rows(l).Delete行:

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

我认为问题是我的工作表名称数组的尺寸设置为变量,但不确定将其设置为对象并循环访问数组中工作表的最佳方法。

如果我的假设正确,请有人告诉我并建议/演示如何解决该问题?

#1楼 票数:1

@BigBen找出问题和可能的解决方案

另一个解决方案是遍历您在WshtNames数组中收集的名称的Worksheets集合

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

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

#2楼 票数:0 已采纳

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

所以代替

WshtNameCrnt.Rows(l).Delete

使用可与Worksheet索引或name一起使用的Worksheets集合,返回有问题的Worksheet对象。

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

  ask by gbra translate from so

未解决问题?本站智能推荐:

2回复

如何从用户窗体一次添加多个数据行到Excel数据库

我正在制作某种足球数据库,我将在其中使用用户表单输入数据以及我想从我的 excel 数据库中检索数据的位置。 我有一个名为“wedstrijden”的工作表 该工作表包含以下列:日期、家庭团队、客场团队、家庭得分、客场得分、家庭赔率和客场赔率我的另一个工作表名为:“ingevenuitslagen”
1回复

如何使用数组中的数据更新用户窗体对象,VBA

这是我发布的上一个问题的后续问题(请参阅此处):https://stackoverflow.com/q/64866771/14651009 从本质上讲,我在 Excel 中有一个 VBA 驱动的用户表单,人们将在其中输入轨道车的数据,因为它们在某个位置(在 5 个“点”处)加载有时他们不得不将那辆有
2回复

将值从用户窗体中的RefEdit控件传递到变体数组

我正在尝试使用以下语句将范围从用户窗体中的 RefEdit 控件传递到 VBA 中的数组: 我认为通过使用.Value属性,这将从用户在 RefEdit1 中所做的任何选择中排除格式,并且只有原始的、未格式化的值将存储在 y0 中。 然而,这并没有发生:当我测试它并选择一个包含货币值的范围时,格式存
1回复

将用户窗体复选框选择保存到数组(以在用户窗体上复制)

如何在用户表单中识别框架中所有选定的复选框并将它们分配给数组,以便我可以/都做到:在一个或多个其他框架中复制选定的复选框并使用该数组填写电子表格单元格? 这是一个分为两部分的问题,但我认为它们是齐头并进的(我不确定)。 我有一个带有多个框架的用户窗体,每个框架(SS)内都有很多复选框-我对
1回复

在Excel用户窗体中创建输入区域框,并将每行用作数组中的条目

我很难找到有关此特定问题的示例。 我正在Excel中自动执行一项任务,我需要用户将ID号列表粘贴到Areabox中。 当他们单击“确定”时,我需要我的宏才能在数组中获取此列表,以便我可以遍历这些id并与它们一起使用(我想检查格式,然后将正确的一次粘贴到Excel的列中) 我尝试并在用户窗
3回复

引用在不同用户窗体中声明的数组

我不是经验丰富的 VBA 程序员,但我一直在尝试创建一个能够管理篮球队的 Excel 电子表格。 在其中我有一个主要的用户表单,我在其中声明了一个数组“selectedPlayers”。 这个主要用户表单有一个 for 循环,它启动次要用户表单 'i' 次。 我无法从次要用户表单访问主要用户表单的“
1回复

将多个用户表单提交存储到一个数组并将该数组存储在一个表中

我在这里看到了以下问题: How to add multiple data rows at once from UserForm to Excel Database这似乎是我的问题的解决方案。 但是,在尝试实施上述解决方案时,我遇到了一些困难。 背景:我想创建一个用户表单,允许我添加股票信息,例如:
1回复

VBAExcel2013:从另一个用户窗体分配数组值

我是VBA的新手。 我有一个正在编写的程序,可以让用户选择以另一种用户形式从二维数组中更改其输入。 第一个用户窗体UserForm1允许用户从文本字段中输入信息,并在按下“保存”命令按钮时将其保存到相应的数组行。 当用户按下OK命令按钮时,询问用户是否要添加另一组数据。 如果他们拒绝