在Excel中使用VBA删除整个行;代码运行,不删除行,不引发任何错误。
我的例程使用Workbooks.Open filName
打开一个现有文件,其中filName
是一个字符串变量。文件最初是使用wbTemp.SaveAs fileName:=MyFileName, FileFormat:=xlOpenXMLWorkbook
该例程在特定单元格上执行操作,然后在操作完成后调用以删除整行。但是,要删除的行仍然存在,代码继续运行,并且不会引发任何错误。我可以(在调试过程中)在Excel中手动删除该行。数据在常规单元格中,而不是表格式。工作表不受保护,没有打开文件的密码,也没有其他已知的异常现象可以解释为什么删除行功能不起作用。
这是工作簿中的一个模块,显示计划的和已完成的课程作业并计算GPA。其他模块创建一组特定的课程,并将现有成绩导入电子表格。
该模块用于在每学期发布成绩后更新电子表格。
在创建工作簿并导入成绩时,此特定的代码行(在不同的子目录中)可以完美地在成绩导入模块中使用。
此例程中的所有代码行都可以在打开的文件中使用,Rows(ActiveCell.Row).EntireRow.Delete
行除外。这些删除行的行是整个代码中唯一的麻烦根源。
这些过程存在于启用了宏的模板工作簿(.xltm)中,并在由模板(.xlsx)打开的文件上运行。从一个工作簿切换到另一工作簿的命令完全可以正常工作。
我将Rows(ActiveCell.Row).EntireRow.Delete
替换为Rows(80).EntireRow.Delete
,但行为没有改变。
这个让我难过。任何帮助将不胜感激。
Private Sub cmdUpdateGrades_Click()
/// preliminary operations - all work correctly
lastrow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
j = 80
ActiveSheet.Range("A80").Activate
Do While j <= lastrow
If ActiveCell.Value = "Course" Or ActiveCell.Value = "" Or _
ActiveCell.Value = "Term" Or ActiveCell.Value = "Cumulative" Then
Rows(ActiveCell.Row).EntireRow.Delete
j = j + 1
ElseIf Left(ActiveCell.Value, 5) = "Term:" Then
/// other operations - work correctly
Rows(ActiveCell.Row).EntireRow.Delete
j = j + 1
Else
/// other operations - work correctly
ActiveSheet.Range("A80").Activate
Rows(ActiveCell.Row).EntireRow.Delete
j = j + 1
End If
Loop
/// other operations
End Sub
答案 0 :(得分:0)
您应该使用:
ActiveCell.EntireRow.Delete
如果您发布整个代码,则可以对其进行优化以使其运行更加顺畅。