PR

【VBA】セルへコメントの挿入/コメントの取得方法

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、Ryoです。
Excelで使うコメント機能は便利なので、何かと使用する機会も多いかと思います。

勿論VBAを使ってコメントを挿入したり、コメント内容を取得することも可能なので、
記録として残したいけど他に使う予定がないデータ等をコメントとして挿入しておいたり、
場合によっては多用されたコメントから内容を取得してセルへ表示したり出来ますので、
今回はその内容についてご紹介します。

スポンサーリンク

1.コメントを挿入する

コメントをセルに挿入する場合は「AddComment」を使用します。
以下のサンプルコードでは「セルA1~A10へコメントを挿入」するものです。

Sub Commnet_Insert()

 Dim i As Integer
 
 Cells(1, 1).Select

  For i = 1 To 10
     With ActiveCell.AddComment("No." & i & "これはコメントを" & _
          vbCrLf & "セルへ挿入する" & vbCrLf & "サンプルです。")
          .Shape.AutoShapeType = msoShapeRoundedRectangle
          .Visible = False
      End With
    ActiveCell.Offset(1, 0).Select
  Next i

End Sub

サンプルコードでのコメントを指定する部分

     With ActiveCell.AddComment("No." & i & "これはコメントを" & _
          vbCrLf & "セルへ挿入する" & vbCrLf & "サンプルです。")
          .Shape.AutoShapeType = msoShapeRoundedRectangle
          .Visible = False
      End With

ActiveCell.AddComment(“この中にコメントを記入”)の様に記述します。
本例ではコメント間に& vbCrLf &を入れることで改行して表示させています。

Withを使用しているのは「記述が面倒」だからですね。
使わない場合の記述はどうなるかと言うと、

   ActiveCell.AddComment ("No." & i & "これはコメントを" & _
     vbCrLf & "セルへ挿入する" & vbCrLf & "サンプルです。")
     ActiveCell.Comment.Shape.AutoShapeType = msoShapeRoundedRectangle
     ActiveCell.Comment.Visible = False

この様になります。
どちらでも実行結果は同じになりますが、何度も同じ記述をしなければならない場合には
「With」関数を使うと記述が楽になります。

AutoShapeTypeでの指定は色々ありますので、お好みで良いと思います。

名前 形状の説明
msoShape16pointStar 星16
msoShape24pointStar 星24
msoShape32pointStar 星32
msoShape4pointStar 星4
msoShape5pointStar 星5
msoShape8pointStar 星8
msoShapeActionButtonBackorPrevious 「戻る」Or「前へ」ボタン
msoShapeActionButtonBeginning 「上旬」ボタン
msoShapeActionButtonCustom 規定画像Orテキストの無いボタン
msoShapeActionButtonDocument 「文書」ボタン
msoShapeActionButtonEnd 「終了」ボタン
msoShapeActionButtonForwardorNext 「進む」Or「次へ」ボタン
msoShapeActionButtonHelp 「ヘルプ」ボタン
msoShapeActionButtonHome 「ホーム」ボタン
msoShapeActionButtonInformation 「情報」ボタン
msoShapeActionButtonMovie 「ビデオ」ボタン
msoShapeActionButtonReturn 「戻る」ボタン
msoShapeActionButtonSound 「サウンド」ボタン
msoShapeArc 円弧
msoShapeBalloon 吹出し
msoShapeBentArrow 90°曲線&矢印
msoShapeBentUpArrow 90°鋭角線&矢印
msoShapeBevel 斜角
msoShapeBlockArc アーチ
msoShapeCan 円柱
msoShapeChevron 山形
msoShapeCircularArrow 180°曲線&矢印
msoShapeCloudCallout 雲形吹出し
msoShapeCross 十字
msoShapeCube 直方体
msoShapeCurvedDownArrow 下カーブ&矢印
msoShapeCurvedDownRibbon 下カーブ&リボン
msoShapeCurvedLeftArrow 左カーブ&矢印
msoShapeCurvedRightArrow 右カーブ&矢印
msoShapeCurvedUpArrow 上カーブ&矢印
msoShapeCurvedUpRibbon 上カーブ&リボン
msoShapeDiamond ひし形
msoShapeDonut ドーナツ形
msoShapeDoubleBrace 中かっこ
msoShapeDoubleBracket 大かっこ
msoShapeDoubleWave 小波
msoShapeDownArrow 下向き矢印
msoShapeDownArrowCallout 下矢印&吹出し
msoShapeDownRibbon リボン(中央面下部)
msoShapeExplosion1 爆発形
msoShapeExplosion2 爆発形
msoShapeFlowchartAlternateProcess 代替処理(フローチャート)
msoShapeFlowchartCard カード(フローチャート)
msoShapeFlowchartCollate 照合(フローチャート)
msoShapeFlowchartConnector 結合子(フローチャート)
msoShapeFlowchartData データ(フローチャート)
msoShapeFlowchartDecision 判断(フローチャート)
msoShapeFlowchartDelay 論理積ゲート(フローチャート)
msoShapeFlowchartDirectAccessStorage 直接アクセス記憶(フローチャート)
msoShapeFlowchartDisplay 表示(フローチャート)
msoShapeFlowchartDocument 書類(フローチャート)
msoShapeFlowchartExtract 抜き出し(フローチャート)
msoShapeFlowchartInternalStorage 内部記憶(フローチャート)
msoShapeFlowchartMagneticDisk 磁気ディスク(フローチャート)
msoShapeFlowchartManualInput 手操作入力(フローチャート)
msoShapeFlowchartManualOperation 手作業(フローチャート)
msoShapeFlowchartMerge 組み合わせ(フローチャート)
msoShapeFlowchartMultidocument 複数書類(フローチャート)
msoShapeFlowchartOffpageConnector 他ページ結合子(フローチャート)
msoShapeFlowchartOr 論理和(フローチャート)
msoShapeFlowchartPredefinedProcess 定義済み処理(フローチャート)
msoShapeFlowchartPreparation 準備(フローチャート)
msoShapeFlowchartProcess 処理(フローチャート)
msoShapeFlowchartPunchedTape せん孔テープ(フローチャート)
msoShapeFlowchartSequentialAccessStorage 順次アクセス記憶(フローチャート)
msoShapeFlowchartSort 分類(フローチャート)
msoShapeFlowchartStoredData 記憶データ(フローチャート)
msoShapeFlowchartSummingJunction 和接合(フローチャート)
msoShapeFlowchartTerminator 端子(フローチャート)
msoShapeFoldedCorner メモ
msoShapeHeart ハート
msoShapeHexagon 六角形
msoShapeHorizontalScroll 横巻き
msoShapeIsoscelesTriangle 二等辺三角形
msoShapeLeftArrow 左向き矢印
msoShapeLeftArrowCallout 左矢印&吹出し
msoShapeLeftBrace 左中括弧
msoShapeLeftBracket 左大括弧
msoShapeLeftRightArrow 左右矢印
msoShapeLeftRightArrowCallout 左右矢印&吹出し
msoShapeLeftRightUpArrow 左、右、上の3方向矢印
msoShapeLeftUpArrow 左、上の2方向矢印
msoShapeLightningBolt 稲妻
msoShapeLineCallout1 枠付き水平吹出し線付きの吹出し
msoShapeLineCallout1AccentBar 水平強調線付きの吹出し
msoShapeLineCallout1BorderandAccentBar 枠付き&水平強調線付きの吹出し
msoShapeLineCallout1NoBorder 水平線付きの吹出し
msoShapeLineCallout2 斜め直線付きの吹出し
msoShapeLineCallout2AccentBar 斜め強調線&吹出し線付きの吹出し
msoShapeLineCallout2BorderandAccentBar 枠、斜め直線、強調線付きの吹出し
msoShapeLineCallout2NoBorder 枠&斜め吹出し線の無い吹出し
msoShapeLineCallout3 折れ線付き吹出し
msoShapeLineCallout3AccentBar 折れた吹出し線&強調線付きの吹出し
msoShapeLineCallout3BorderandAccentBar 枠、折れた吹出し線、強調線付きの吹出し
msoShapeLineCallout3NoBorder 枠、折れた吹出し線のない吹出し線
msoShapeLineCallout4 U字型吹出し線分付きの吹出し
msoShapeLineCallout4AccentBar 強調線&U字型吹出し線分付き吹出し
msoShapeLineCallout4BorderandAccentBar 枠線、強調線、U字型吹出し線分付きの吹出し
msoShapeLineCallout4NoBorder 枠線、U字型吹出し線分のない吹出し
msoShapeMixed 値のみ
msoShapeMoon
msoShapeNoSymbol 禁止
msoShapeNotchedRightArrow 右向きV字型矢印
msoShapeOctagon 八角形
msoShapeOval 楕円
msoShapeOvalCallout 円形吹出し
msoShapeParallelogram 平行四辺形
msoShapePentagon ホームベース
msoShapePlaque ブローチ
msoShapeQuadArrow 4方向矢印
msoShapeQuadArrowCallout 4方向矢印付き吹出し
msoShapeRectangle 四角形
msoShapeRectangularCallout 四角形吹出し
msoShapeRegularPentagon ホームベース
msoShapeRightArrow 右向き矢印
msoShapeRightArrowCallout 右向き矢印付き吹出し
msoShapeRightBrace 右中括弧
msoShapeRightBracket 右大括弧
msoShapeRightTriangle 直角三角形
msoShapeRoundedRectangle 角丸四角形
msoShapeRoundedRectangularCallout 角丸四角形吹出し
msoShapeSmileyFace スマイル
msoShapeStripedRightArrow ストライプ付きの右向き矢印
msoShapeSun 太陽
msoShapeTrapezoid 台形
msoShapeUpArrow 上向き矢印
msoShapeUpArrowCallout 上矢印&吹出し
msoShapeUpDownArrow 上下2方向矢印
msoShapeUpDownArrowCallout 上下2方向矢印&吹出し
msoShapeUpRibbon 中央面上のリボン
msoShapeUTurnArrow U字型矢印
msoShapeVerticalScroll 縦巻き
msoShapeWave 大波

私も全て試したわけではありませんが、指定出来る種類はたくさんありますので用途に応じて使い分けられるのが良いところですね。

2.コメントを取得する

次にセルに付加されたコメントの内容を取得し、別のセルに表示するサンプルコードです。
これは上で紹介したサンプルコードを実行するとセルA1~A10にコメントが挿入されるので、その後当サンプルコードを実行すると、セルB1~B10にコメント内容が書き込まれます。

Sub Comment_Get()

  Dim i As Integer
  Dim ComTxt As String

 For i = 1 To 10

   If Not Cells(i, 1).Comment Is Nothing Then
       ComTxt = Cells(i, 1).Comment.Text
       Cells(i, 2) = ComTxt
   End If

 Next i

End Sub

先ず If Notでコメントの有無を確認しています。
コメント有れば、指定したセルのコメントテキストをComTxtに読み込み、書き込み先の
B列セルにComTxtを代入しています。

実行してもらえれば、B列にズラーっとコメントのテキストが書き込まれたと思います。
こうすることでコメントのデータを取得することは出来ますが、何かと処理に手間がかかりますから、必要なデータの場合はコメントを多用しない方が無難ですね。



以上がVBAでコメントの挿入、及びコメント内容を取得する方法の紹介になります。
上手く使えば何かと便利ですので、機会あればぜひ活用してみてください。
今回の記事が何かの参考になれば幸いです。

Ryo

タイトルとURLをコピーしました