Excel VBA質問箱 IV

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

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


12064 / 13646 ツリー ←次へ | 前へ→

【12588】セル同士の完全な比較 Ni 04/4/8(木) 11:11 質問
【12597】Re:セル同士の完全な比較 bykin 04/4/8(木) 21:43 回答
【12603】Re:セル同士の完全な比較 Ni 04/4/9(金) 8:53 お礼

【12588】セル同士の完全な比較
質問  Ni  - 04/4/8(木) 11:11 -

引用なし
パスワード
   始めまして。
どうか助けてください。

例えば、Sheet1のA1セルに
「あいうえお」と入力されていて「あ」は「太字の赤」
「い」は「イタリックの青」等と言うように文字ごとに書式がことなっていたとします。
同様にB1〜B5セルに全て「あいうえお」と同じ文字は入っているのですが
書式がB4セルのみA1セルと一致します。
他は「あ」は「太字だけど色が黄色」だったりと書式が微妙に一致しません。

上記のような書式まで一致するかどうかの比較をTrueかFalseで返す関数を作成したいのです。

「Characters(s, l).Font.color」や「Characters(s, l).Font.Bold」
で一文字ずつ比較していく関数を作成したのですが、ものすごく重くて実用的でありません。

他にもっと良い方法があるのでしょうか?

お助けください。

【12597】Re:セル同士の完全な比較
回答  bykin  - 04/4/8(木) 21:43 -

引用なし
パスワード
   こんばんわ。

HTML形式で保存して、ソースを比較したらいけるかな?って考えてみたけど、あかんみたいやね。
やっぱし1文字ずつ比較せんとしゃーないんとちゃうかな?

わての環境(Excel2003)では、そんなに重くはならへんねんけど・・・
数式の数がめっちゃ多いんでっしゃろか?

Function 完全一致(Comp1 As Range, Comp2 As Range) As Boolean
  Dim F1 As Font
  Dim F2 As Font
  Dim i As Long

  完全一致 = False
  If Not Comp1.HasFormula And _
    Not Comp2.HasFormula Then
    If Comp1.Value = Comp2.Value Then
      For i = 1 To Len(Comp1.Value)
        Set F1 = Comp1.Characters(i, 1).Font
        Set F2 = Comp2.Characters(i, 1).Font
        If F1.Bold <> F2.Bold Then Exit Function
        If F1.Color <> F2.Color Then Exit Function
        If F1.FontStyle <> F2.FontStyle Then Exit Function
        If F1.Italic <> F2.Italic Then Exit Function
        If F1.Size <> F2.Size Then Exit Function
        If F1.Strikethrough <> F2.Strikethrough Then Exit Function
        If F1.Subscript <> F2.Subscript Then Exit Function
        If F1.Superscript <> F2.Superscript Then Exit Function
        If F1.Underline <> F2.Underline Then Exit Function
      Next
      完全一致 = True
    End If
  End If
  Set F1 = Nothing
  Set F2 = Nothing
End Function

うまいこといかんかったらかんにんな。
ほな。

【12603】Re:セル同士の完全な比較
お礼  Ni  - 04/4/9(金) 8:53 -

引用なし
パスワード
   Bykinさん、ありがとうございました。

>やっぱし1文字ずつ比較せんとしゃーないんとちゃうかな?
やはりそうですか。。。

文字数が多いので多少時間がかかりますが
プログレスバーを出すなどして対応することにします。

ソースまで書いていただき感謝します。
ありがとうございました。

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