检查是否填充了单元格

时间:2009-07-27 19:11:36

标签: excel excel-vba vba

我有一个可以在Excel中打开的HTML报告。我编写了宏来格式化此报告,因此它可以排序并且可以应用过滤器。

我想在斜杠之间抓取文字。报告大小,行数,未知。

A栏是空白的。 B列将包含完整路径名。如果填充了列B列,则列C应该包含斜杠之间的文本。

例如,B列包含R:\ testdocuments \ test.html。我希望列C包含测试文档。

我对C列的代码:

Range("C9").Select
ActiveCell.FormulaR1C1 = _
    "=MID(RC[-1], FIND(""\"",RC[-1])+1, FIND(""\"",RC[-1], FIND(""\"",RC[-1])+1)-FIND(""\"",RC[-1])-1)"
Range("C9").Select
    Selection.AutoFill Destination:=Range("C9:C65000"), Type:=xlFillDefault
Range("C9:C20000").Select

这是无效的,因为它需要永远排序/过滤任何东西。

如何检查列B是否已填充,如果是,是否使用斜杠之间的文本填充C以便按目录过滤?

1 个答案:

答案 0 :(得分:3)

首先,一些一般提示:

  1. 编写宏时,可以使用Ranges而不选择它们。
  2. 在宏的开头使用以下代码,以防止应用程序动画化(减慢速度):Application.ScreenUpdating = False

    编辑:确保完成后将其重新设置为“True”。

  3. 您可以使用Range("C9:C65000")实际让Excel找到最后一行而不是Range("A1").SpecialCells(xlCellTypeLastCell).Row
  4. 所以,宏可能看起来像这样:

    Sub FillFormulas()
        Dim row As Integer
        Application.ScreenUpdating = False
        row = Range("B9").SpecialCells(xlCellTypeLastCell).row
        Range("C9").Formula = "=MID(B9, FIND(""\"",B9)+1, FIND(""\"",B9, FIND(""\"",B9)+1)-FIND(""\"",B9)-1)"
        Range(Range("C9"), Range("C" & row)).FillDown
    End Sub