我在此行上遇到运行时91错误:ws.Rows(“ 1:1”)。Select.Find(T).EntireColumn.Delete
前几天,代码运行良好。今天不是。有时我会在代码的第一个循环中遇到错误,有时会遇到部分错误。 *警告我对vba非常陌生
非常感谢您,我为此苦苦挣扎了很长时间。如果您能解释我的问题,让我可以学习,那真是太棒了! :)
我查看了与此问题相关的所有其他帖子,但是这些问题的相关性还不足以让我解决问题。我尝试阅读一些有关定义对象的文章。我一直在使用msgbox命令来确保代码正在查找值,并且接缝一直在起作用,但是在'find'命令中就失败了。
Sub DeleteBadHeaders2()
Dim FirstHeading As Range
Set FirstHeading = Worksheets("Headings_To_Delete").Range("a2")
'Worksheet that has all the column headings I want deleted
Dim x As Integer
'x is for the do while loop to individually highlight each cell
Dim y As Long
y = Worksheets("Headings_To_Delete").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
'y acts as the upper bound to the headings to delete column for the while loop
Dim T As Variant
'T acts as a temporary value holder that will be used to delete the proper columns
Dim ws As Worksheet
Set ws = ActiveSheet
x = 0
Do While x < (y - 1)
Worksheets("Headings_To_Delete").Range("a2").Offset(x, 0).Interior.Color = RGB(224, 0, 0)
'Calling the rage as above fixes the active cell problem
Let T = Worksheets("Headings_To_Delete").Range("a2").Offset(x, 0).Value
'MsgBox T & " is found."
ws.Rows("1:1").Select.Find(T).EntireColumn.Select
'for testing switch the last part of the code to EntireColumn.Interior.Color = RGB(0, 225, 0)
x = x + 1
Loop
'The loop is highlighting the cells incrementally based on the first active cell until the upper limit of how many cells are in the column
End Sub
我有一个带有许多列标题的数据表。我列出了我不想在数据中使用的所有列标题。我想要一个健壮的vba代码,无论它们在工作表中的什么位置,都可以删除列标题,并且其他人可以添加其他列以删除不知道vba的人
答案 0 :(得分:4)
ws.Rows("1:1").Select.Find(T).EntireColumn.Select
应该是
ws.Rows(1).Find(T).EntireColumn.Select 'Delete?
通常,尽管每次使用Find()
都是一个好主意,但是在尝试执行Nothing
或{{1}之类的操作之前,通过测试Select
的返回值来检查您是否发现了任何东西}。
明确指出Find中的其他一些参数也是一个好主意,例如Delete
。
类似这样的东西:
lookAt