dポイントプレゼントキャンペーン実施中!

よろしくお願いします。

【条件】
セルの文字列を一文字ずつ読み込み、
文字色が赤だったら黒にするというVBAを作成したいです。
例)
セルA(1、1)の「あいうえお」 の”い”が青、”う”が赤だった場合、”う”を黒にする。

【状況】
以下のようなVBAを作成しました。
実行するとVBAは正常終了するのですが、VBAで上記変換をかけたEXCELファイルを開くと
エラーが発生します。
デバッグモードで一行ずつ実行すると下記※2部分で文字化け?しているようです。
VBA)
Do Until i = c
 If Range("xx").Characters(i ,c-1).Font.color = RGB(255,0,0) then
   Range("xx").Characters(i, c-1).Font.color = RGB(0,0,0)  ・・・※2
   i = i +1
 End if
Loop

【エラー】
『"ファイル名"には読み取れない内容が含まれています。このブックの内容を回復しますか?
ブックの発信元が信頼できる場合は「はい」をクリックして下さい。』
『"ファイル名”の修復
読み取れなかった内容を修復または削除することにより、ファイルを開くことが出来ました。
修復されたレコード./xl/worksheets/sheet1.xmlパーツ内のビュー』

上記エラーが表示される+エクセルの内容の大部分が消えます。

【質問】
上記VBAは本物を持ち出せないのでイメージです。
(もしかしたら細かい間違いがあるかもしれませんが実物は構文エラーはありません。)
質問したいのはロジックではなく以下になるのでイメージで汲み取っていただけるとありがたく。。

(1)Fontの書き換えを行った際、上記【エラー】が発生するのはどのような理由があるか
 わかりますでしょうか。

(2)エラーの理由の詳細はわからないが「こんなやりかたではどうか」という
 【条件】を満たす他のロジックは何かないでしょうか。

他にもオートメーションエラーが発生したり正直お手上げ状態でわらをもすがる思いです。
思いつきでもよいので何かありましたら回答のほどよろしくお願いいたします。 

A 回答 (1件)

こんばんは!


質問内にある(2)に当てはまりますが・・・
エラーの原因が何であるかは判りませんが、↓のようなコードではどうでしょうか?
(対象セルはA1としています)

Sub test()
Dim k As Long
For k = 1 To Len(Cells(1, 1))
If Cells(1, 1).Characters(Start:=k, Length:=1).Font.Color = RGB(255, 0, 0) Then
Cells(1, 1).Characters(Start:=k, Length:=1).Font.Color = RGB(0, 0, 0)
End If
Next k
End Sub

お役に立たなかったらごめんなさいね。m(_ _)m

この回答への補足

回答ありがとうございます。

RangeのプロパティでなくCellを使用してみる・・
ということですね。

試してみます!結果はお礼で報告させていただきます。

補足日時:2012/05/05 09:58
    • good
    • 0
この回答へのお礼

やはりエラーにはなってしまいます。。

回答ありがとうございました!

お礼日時:2012/05/06 14:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!