Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7843 / 13645 ツリー ←次へ | 前へ→

【36468】セル内の斜体字の検査→全てのセルを対象... かいと 06/3/31(金) 20:45 質問[未読]
【36471】Re:セル内の斜体字の検査→全てのセルを対... Kein 06/3/31(金) 21:10 回答[未読]
【36538】Re:セル内の斜体字の検査→全てのセルを... かいと 06/4/2(日) 22:36 お礼[未読]

【36468】セル内の斜体字の検査→全てのセルを対象...
質問  かいと  - 06/3/31(金) 20:45 -

引用なし
パスワード
   はじめまして。
セル内に斜体文字と普通の文字が不規則に混ざっている文字列が入力されています。
斜体の文字列と普通の文字列の間に目印の文字を挿入したいと考え、

例:
|(A:普通の文字、I:斜体の文字、@:目印)

|「AIIAAIAI」

|という文字列を

|「A@II@AA@I@A@I」
|にします。

文字列のフォントを左から順に2つずつ検査する
下記のようなコードを書きました。

現在はシート「sheet1」のセル「a1」を対象にしているのですが、
シート内の、データが入力されている全てのセルを対象に上記の例のような
結果を得たいのですが、どのようなやり方をすれば良いか教えて頂けませんでしょうか。

宜しくお願い致します。


'−−ここから−−−−−−−−−−
Sub イタリック検査()
  
Dim mae As Boolean
Dim ato As Boolean
Dim n As Integer
Dim S As Integer

'何回変化するのか検査する(→s回)
For n = 1 To Worksheets("sheet1").Range("a1").Characters.Count - 1
  mae = Worksheets("sheet1").Range("a1").Characters(n, 1).Font.Italic
  ato = Worksheets("sheet1").Range("a1").Characters(n + 1, 1).Font.Italic
    If mae <> ato Then
      S = S + 1
    End If
Next

'変化する文字の前に文字列「@」挿入
For n = 1 To Worksheets("sheet1").Range("a1").Characters.Count - 1 + S
  mae = Worksheets("sheet1").Range("a1").Characters(n, 1).Font.Italic
  ato = Worksheets("sheet1").Range("a1").Characters(n + 1, 1).Font.Italic
    If mae <> ato Then
      Worksheets("sheet1").Range("a1").Characters(n + 1, 0).Text = "@"
      n = n + 1
    End If
Next

End Sub

【36471】Re:セル内の斜体字の検査→全てのセルを...
回答  Kein  - 06/3/31(金) 21:10 -

引用なし
パスワード
   Sub Test_Check_Ita()
  Dim MyR As Range, C As Range
  Dim i As Integer
 
  On Error GoTo ELine
  Set MyR = Cells.SpecialCells(2, 2)
  On Error GoTo 0
  For Each C In MyR
   For i = Len(C.Value) To 2 Step -1
     If C.Characters(i, 1).Font.Italic _
     Xor C.Characters(i - 1, 1).Font.Italic Then
      C.Characters(i, 0).Insert "@"
     End If
   Next i
  Next
  Set MyR = Nothing
ELine:
End Sub

で、どうでしょーか ? テストしてみたら、ちょっと見づらくて正確に出来た
かどうか、はっきりしませんでしたが・・。

【36538】Re:セル内の斜体字の検査→全てのセルを...
お礼  かいと  - 06/4/2(日) 22:36 -

引用なし
パスワード
   keinさま

回答有り難うございます。

正しく理解したとはいえないのですが、
後ろから検査していくとループが1つで済むのですね。
処理速度も速くなったようです。
(結構時間がかかる処理のようです。)
勉強になりました。有り難うございます。

7843 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free