2015-04-05 1535 views
0

请帮助调试:运行时错误“438”对象不支持此属性或方法Excel的VBA:运行时错误“438”对象不支持此属性或方法带有“范围”

我不知道为什么我的声明Set ImCrazy = .Find(“Total”)不起作用。

“总计”是约23个细胞的一部分。我基本上要找到每一个,选择它,然后将1个细胞在和输入功能等

Sub Utilization() 

'Utilization Macro 

'Keyboard Shortcut: Ctrl+u 

Dim lastRow As Long 
Dim x As Integer 
Dim knt As Integer 
Dim ImCrazy As Range 

    With ActiveSheet 
     ActiveCell.Offset(3, 0).Range("A1").Select 
     Range(Selection, Selection.End(xlToRight)).Select 
     Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
     Selection.AutoFilter 
     .Range("$A$4:$F$800").AutoFilter Field:=3, Criteria1:="0" 
     ActiveCell.Offset(6, 1).Range("A1").Select 
     lastRow = .Range("A" & Rows.Count).End(xlUp).Row 
     .Range(.Range("b2"), .Range("b" & lastRow)). _ 
       SpecialCells(xlCellTypeVisible).Value = _ 
         "0" 
         ActiveCell.FormulaR1C1 = "0" 

     .Range("$A$4:$F$800").AutoFilter Field:=3 
     .Range("a1").Select 
     .Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
     Set ImCrazy = .Find("Total", xlValues, xlPart, xlByRows, xlNext, False, False) 

     If Not ImCrazy Is Nothing Then 
      ImCrazy.Offset(0, 1).Value = "=SUM(R[-" & knt & "]C:R[-1]C)" 
      ImCrazy.Offset(0, 3).Value = "=(RC[-1]+RC[2])/RC[-2]" 
     Else 
      MsgBox "'Total' not found'" 
     End If 
    End With 
End Sub 

我还需要这是一个循环,所以它会继续检查单词“总“

总结 1.我需要关于运行时错误的帮助 2.我需要帮助构建代码来重复查找”total“并插入函数。

在此先感谢!

回答

0

您需要遵循Range Object Find Method的正确语法。
所以下面一行不起作用,因为:

Set ImCrazy = .Find("Total", xlValues, xlPart, xlByRows, xlNext, False, False) 
  1. 它没有指定的范围内。使用点.表示您试图从ActiveSheet调用属性或方法。结果为Error 428,因为工作表对象实际上没有Find Method
  2. 您没有提供参数名称,但您没有包含After参数。即使你纠正了对象引用,它仍然会失败。

试试这个:

.Cells.Find("Total") ' This finds a cell that contains "Total" in the ActiveSheet 

现在,如果你需要找到所有出现,那么你就必须使用循环和FindNext Method

相关问题