Excel:マクロでコメントを置換したらコメントがみんな太字になっちまった

Excel:マクロでコメントを置換したらコメントがみんな太字になっちまった

面白そうだったので仲間内でOneDriveを使ってWeb上でExcelファイルを共同編集してました。
後でファイルをローカルにダウンロードしてから気づいたのですが、ワークシート上で挿入したコメントのユーザー名がMicrosoftアカウント名になっちゃってます(当たり前ですが)。
Microsoftアカウント名はローカルで使ってるアカウントとはすこしだけ変えて登録してて、ちょっと困りました。
わりとたくさんのコメントを挿入してしまったのでマクロで一気にコメント内のユーザー名の部分を置換したら、置換されたコメントどころか、挿入されているコメントのすべてが太字になってしまいました。
…なんで?

コードは
Sub コメントのユーザーリネーム()
Dim コメント As Comment
For Each コメント In ActiveSheet.Comments
コメント.Text Text:=Replace(コメント.Text, "傘藁", "笠原")
Next コメント
End Sub

です。


~テンプレ~

Replaceを使うと作成者名とコメント本文の書式の違いが失われてしまい、すべてが太字になってしまいます。
本来なら
Sub コメントのユーザーリネーム()
Dim コメント As Comment
For Each コメント In ActiveSheet.Comments
If Left(コメント.Text, 3) = "小傘藁" Then vCmt.Text Text:="笠原", Start:=2, Overwrite:=2
Next コメント
End Sub
などとすべきでした。

修正するためのコード
Sub 名前以外は細字に戻す()
Dim コメント As Comment
For Each コメント In ActiveSheet.Comments
コメント.Shape.DrawingObject.Font.Bold = False
コメント.Shape.TextFrame.Characters(1, 4).Font.Bold = True
Next vCmt
End Sub

CommentオブジェクトのTextメソッドは、戻り値としてコメントの文字列を返します。
Textメソッドを引数無しで使用すると、現在のコメントの文字列をそのまま取得することになります。

Textメソッドの
引数Textにはコメントに設定したい文字列
引数Startにはその文字列の開始位置
引数Overwriteには置き換える文字数をそれぞれ指定します。
Startが省略されていると1とみなされます。
Overwriteを省略した場合はStart位置以降のコメント全体が置換されます。





関連記事
Guide
  •  …この記事と同じカテゴリの前後記事へのページナビ
  •  …この記事の前後に投稿された記事へのページナビ
 

~ Comment ~

  ※コメントの編集用
  シークレットコメントにする (管理者のみ表示)

~ Trackback ~

卜ラックバックURL


この記事にトラックバックする(FC2ブログユーザー)

MENU anime_down3.gif

同じカテゴリの記事が一覧表示されます
同じタグの記事が一覧表示されます
更新月別の記事が一覧表示されます
キーワードで記事を検索