2017-06-02 45 views
-1

我正在嘗試學習VBA。查找具有上標和下標文字的單元格

我想在單元格文本中標記具有上標/下標的單元格。這可能使用Excel VBA?

+0

https://msdn.microsoft.com/en-us/library/office/ff198232.aspx –

+0

看一看在[宏錄製](https://stackoverflow.com/documentation/excel- vba/8204/how-to-record-a-macro),以瞭解如何使用VBA進行操作。如果您是VBA的初學者,我還建議閱讀[VBA最佳實踐](https://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices)指南,並從一開始就遵循這些規則。 –

+0

@Peh,我有一些VBA的知識,我只是不知道如何知道一個單元格是否包含SUP或SUB字符格式和在哪個字符索引? – raju

回答

2

如果你的細胞是

  • 所有標,或
  • 開始有上標字符(這是離奇 - xlPart應該找一個格式化字符串的任何部分)

那麼這代碼(設置爲查看B列)將比根據msft鏈接測試非常單元格中的每個字符要快得多

您可以使用Application.FindFormat.Font.Superscript = True上標

失敗這我會看看更復雜的解決方案來解析出這些需要導出文本的字符。

Sub Test() 

    Dim ws As Worksheet 
    Dim rng1 As Range 
    Dim rng2 As Range 
    Dim rng3 As Range 
    Dim FirstAddress As String 

    Set ws = ActiveSheet 
    Set rng1 = ws.Range("B:B") 


    Application.FindFormat.Font.Subscript = True 


    With rng1 
     Set rng2 = .Cells.Find("*", , xlFormulas, xlPart, xlByRows, xlNext, , , True) 

     If rng2 Is Nothing Then 
      MsgBox "None found" 
     Else 
      FirstAddress = rng2.Address 
      Set rng3 = rng2 
      Do 
       Set rng2 = .Cells.Find("*", rng2, xlFormulas, xlPart, xlByRows, xlNext, , , True) 
       If rng2.Address = FirstAddress Then 
        Exit Do 
       Else 
        Set rng3 = Union(rng3, rng2) 
       End If 
      Loop 
      If Not rng3 Is Nothing Then MsgBox rng3.Address 
     End If 
    End With 
End Sub 
+0

這對我來說只適用於完全格式化的單元格(就像'xlPart'沒有幫助一樣)。在設置新格式之前,幾乎還需要在「Application.FindFormat.Clear」前面加上,以避免將新格式與以前的設置合併。 +1雖然鋪平了道路。 –

相關問題