VBA:运行时错误91,Find-代码昨天工作,现在可以正常工作

时间:2019-06-27 16:04:08

标签: excel vba

我在此行上遇到运行时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的人

1 个答案:

答案 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