Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2013)
コメント書式取得
投稿日時: 18/03/02 15:49:45
投稿者: シラタマ

Dim Sh as Worksheet, Rn As Range
Set Sh = Worksheets("コメント")
For Each Rn In Sh.UsedRange
    If TypeName(Rn.Comment) = "Comment" Then
       Range(Rn.Address).Value = Rn.Comment.Text
    End If
Next Rn
で本文は取得出来ますが、
書式を取得する方法がわかりません。
宜しくお願い致します。

回答
投稿日時: 18/03/02 20:04:35
投稿者: WinArrow
投稿者のウェブサイトに移動

>コメントの書式
には、いろいろあるけど
背景色を例にして
 
For Each Rn In Sh.UsedRange
     If TypeName(Rn.Comment) = "Comment" Then
        Rn.Value = Rn.Comment.Text
        Rn.Interior.Color = Rn.Comment.Shape.DrawingObject.Interior.Color
     End If
Next Rn
 
なお
Range(Rn.Address).Value
は回りくどい
Rn.Value
でOK

回答
投稿日時: 18/03/03 08:28:02
投稿者: simple

フォントの大きさとか、ボールド、イタリックなどの書式は
VBAでの操作はできないように思います。
 
マクロ記録でも書式部分は記録されませんし、
コメントの修正画面からシートにコピーペイストしても
プレーンなテキストしか対象になりませんね。
ニーズがさほどないだろうとの判断でしょう(勝手な想像)。

回答
投稿日時: 18/03/03 10:53:23
投稿者: WinArrow
投稿者のウェブサイトに移動

simple さんの引用:

フォントの大きさとか、ボールド、イタリックなどの書式は
VBAでの操作はできないように思います。

コメントの書式設定のことをおっしゃっているのでしょうか?
 
フォントの大きさとか、ボールド、イタリックなどの書式は
VBAで設定でますが・・・・
 

回答
投稿日時: 18/03/03 11:30:21
投稿者: simple

ああ、そうでした。
Selection.Comment.Shape.TextFrame.Characters.Font.Size = 11
といった書き方でした。どうも失礼しました。

投稿日時: 18/03/05 09:37:24
投稿者: シラタマ

WinArrow さん
 さん
回答、有り難う御座います。
 
Comment.Shape.としてもDrawingObjebtは
メンバー選択には表示されません。
オブジェクト ブラウザでも表示されません。
凄いです。
TextFrameは思い浮かびませんでした。
 
WinArrow さんご指摘の下記は
Range(Rn.Address).Value
は回りくどい
Rn.Value
でOK
 
説明不足でした。
目的は コメント シート(便宜上)のコメントを
取得 シートの対応セルに表示させる事です。
また、取得 シートに追加して設定します。

投稿日時: 18/03/05 09:42:51
投稿者: シラタマ

simple さん が さん
だけになっていました。
失礼しました。

回答
投稿日時: 18/03/05 10:13:12
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
説明不足でした。
 目的は コメント シート(便宜上)のコメントを
取得 シートの対応セルに表示させる事です。
また、取得 シートに追加して設定します。

 
私が、不思議とは思いましたが、
コメントセルが存在するセルに「コメントデータ」を書き込むと
勘違いしていました。
コメントセルは存在するシートと取得した「コメントデータ」を
かくのう書き込むシートがことなるということですね?
 
↑の説明では
>取得したシート
の意味がよくわかりません。
コードでは、アクテイブシートに「コメントデータ」が書き込みされます。
Shシートがアクテイブであった場合の安全対策として
  DestSHeet.Range(Rn.Address).Value = Rn.Comment.Text
のようにシートで修飾することをお勧めします。
 
 
 

投稿日時: 18/03/05 10:58:46
投稿者: シラタマ

WinArrow さん
 
ご指摘有り難う御座います。
またも、説明不足です。
取得 シートでマクロ実行するので問題ありません。
DestSHeet は参考にさせて頂きます。
 
追加質問です。
回答を参考にして試みましたが、・・・
取得 シートをコメント シートに反映が出来ません。
前提:コメント シートのコメントを削除して
For Each Rn In ActiveSheet.UsedRange
    If Rn.value〈〉"" Then
       With Sh.Range(Rn.Address).AddComment
           .Text Text:=Rn,Value
           書式設定
したいのですが、出来ません。
AddCommentをヘルプするとパラメーターは
Text のみです。
マクロ記録しても書式設定コードは記録されません。
宜しくお願い致します。
 
 

投稿日時: 18/03/05 13:32:14
投稿者: シラタマ

出来ました。
AddComment に対するのではなく
Sh.Range(Rn.Address).Comment
に対して設定すれば良いだけでした。
 
WinArrow さん
simple さん
有り難う御座いました。