2009-07-27 96 views
0

我有一個可以在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以便按目錄進行篩選?

回答

3

首先,一些一般提示:

  1. 編寫宏時,您可以使用範圍工作,而選擇它們。
  2. 使用在宏的開頭下面的代碼以防止應用程序動畫(其中減緩下來):Application.ScreenUpdating = False

    編輯:確保並設置回爲「True」你以後完成。

  3. 而不是Range("C9:C65000"),你可以讓Excel使用Range("A1").SpecialCells(xlCellTypeLastCell).Row找到最後一行。

因此,宏可能是這個樣子:

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 
+0

@Lance,我敢肯定,這不是一個壞主意,設置Application.ScreenUpdating回沒錯,但我已經寫噸宏我沒有,並從未發現任何不良影響。 – devuxer 2009-07-27 23:51:35

相關問題