2017-06-02 12 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。 –

関連する問題