我创建了一个用户窗体,该窗体允许用户创建新行(行)或更改这些行中的值。 但是,现在我尝试为用户添加选项,以从表中和仅从表中删除行。 含义:我不希望删除excel工作表中的整行,我只想删除表中各列中的部分。 它将是这样的:用户输入变量,代码在表中找到该变量并因此标识该行,然后删除整个行( ...
提示:本站收集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
我认为问题是我的工作表名称数组的尺寸设置为变量,但不确定将其设置为对象并循环访问数组中工作表的最佳方法。
如果我的假设正确,请有人告诉我并建议/演示如何解决该问题?
@BigBen找出问题和可能的解决方案
另一个解决方案是遍历您在WshtNames
数组中收集的名称的Worksheets
集合
For Each WshtNameCrnt In Worksheets(WshtNames)
WshtNameCrnt.Rows(l).Delete
Next
两种解决方案(以及您的代码)都无法管理工作表名称与当前任何工作簿工作表都不匹配的情况
WshtNameCrnt
是Worksheet
的名称,而不是实际的Worksheet
对象。
所以代替
WshtNameCrnt.Rows(l).Delete
使用可与Worksheet
索引或name一起使用的Worksheets
集合,返回有问题的Worksheet
对象。
ThisWorkbook.Worksheets(WshtNameCrnt).Rows(1).Delete
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.