繁体   English   中英

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

Deleting a specific row on multiple worksheets using a userform

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

我已基于对先前问题的回答编写了代码,以删除工作簿中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

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

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

2 个回复

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

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

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

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

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

所以代替

WshtNameCrnt.Rows(l).Delete

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

ThisWorkbook.Worksheets(WshtNameCrnt).Rows(1).Delete
1 Vba Excel使用用户窗体从表中删除行

我创建了一个用户窗体,该窗体允许用户创建新行(行)或更改这些行中的值。 但是,现在我尝试为用户添加选项,以从表中和仅从表中删除行。 含义:我不希望删除excel工作表中的整行,我只想删除表中各列中的部分。 它将是这样的:用户输入变量,代码在表中找到该变量并因此标识该行,然后删除整个行( ...

2019-02-26 13:59:27 0 29   excel/ vba
3 使用用户窗体时自动将工作表滚动到活动行

通过用户表单输入数据。 输入几句后,我不再看到活动单元格,并且在用户窗体处于活动状态时无法滚动工作表。 我想让工作表自动滚动,以便在用户窗体上输入数据时保持活动单元格/行可见。 我尝试添加一些在网上找到的代码,但它们均未能获得我想要的结果。 我没有使用VBA的经验。 老实说, ...

5 使用用户窗体关闭工作簿

我已经在Excel中创建了一个用户窗体,因此当我打开xlsm文件时,它仅打开用户窗体,而工作簿被隐藏。 但是,当我使用[X]按钮关闭用户表单时,我希望它关闭工作簿和用户表单而不保存。 当我现在关闭用户表单,并尝试再次打开同一文件时,它说它已经/ stil打开。 启动代码: ...

6 如何使用用户输入删除ArrayList中的特定行

我试图弄清楚当用户键入书ID号时如何删除Arraylist中的特定行。 但是似乎无法在我的Arraylist的任何地方找到该ID号。 bookList是一个ArrayList,它读取文本文件并以String形式出现。 我的文本文件中的一行如下所示: 但是,如果用户键入“ ...

7 如何使用用户窗体从选定的工作簿中选择工作表

我正在尝试创建一个宏,该宏允许用户从特定的工作簿和工作表更新主工作簿(宏所在的位置)。 工作簿和工作表的名称可能会有所不同,因此我从ozgrid论坛改编的代码中调用此UserForm: 现在问题出在主工作簿中调用用户表单的模块。 我收到此位的类型不匹配错误:Set wb1 = MyF ...

8 使用用户表单选择和删除Excel工作表

我在网上找到了这段代码,几乎可以完成我想要的。 当前,它在工作簿中(在用户窗体内)提供工作表的列表,然后我可以选择要删除的工作表(通过复选框),并保留未选择的工作表。 我希望它的工作与此相反:选择我要保留的工作表并删除未选择的工作表。 ...

9 是否可以创建一个可以使用多个变量来运行搜索Excel工作表中的行的用户窗体

我正在为我的团队创建一个Userform界面,我们想让我们的数据捕获更加统一和简单,我们希望通过运行搜索来消除重复条目之一,目前我只搜索发票编号,这是有效的,但是我们要求我们包含乘法变量,我的代码如下所以我的界面看起来像: 我的发票查询代码是 这样可行,所以我决定尝试添加其他参数 ...

2019-04-15 04:54:55 0 28   excel/ vba
10 使用用户表单查找和更新多个工作表

我有一个用户userform ,它根据某些条件将数据发送到同一工作簿中的多个工作表。 ws1 , ws2 , ws3和ws4 ws1是ws4版表,它将包含所有条目,而3个相应的工作表是根据条件支出最终显示信息的地方。 但是,我现在要做的是插入更新功能。 每行都有一个参考。 如果某行符 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM