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吹出し
msoShapeBentArrow90°曲線&矢印
msoShapeBentUpArrow90°鋭角線&矢印
msoShapeBevel斜角
msoShapeBlockArcアーチ
msoShapeCan円柱
msoShapeChevron山形
msoShapeCircularArrow180°曲線&矢印
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枠、折れた吹出し線のない吹出し線
msoShapeLineCallout4U字型吹出し線分付きの吹出し
msoShapeLineCallout4AccentBar強調線&U字型吹出し線分付き吹出し
msoShapeLineCallout4BorderandAccentBar枠線、強調線、U字型吹出し線分付きの吹出し
msoShapeLineCallout4NoBorder枠線、U字型吹出し線分のない吹出し
msoShapeMixed値のみ
msoShapeMoon
msoShapeNoSymbol禁止
msoShapeNotchedRightArrow右向きV字型矢印
msoShapeOctagon八角形
msoShapeOval楕円
msoShapeOvalCallout円形吹出し
msoShapeParallelogram平行四辺形
msoShapePentagonホームベース
msoShapePlaqueブローチ
msoShapeQuadArrow4方向矢印
msoShapeQuadArrowCallout4方向矢印付き吹出し
msoShapeRectangle四角形
msoShapeRectangularCallout四角形吹出し
msoShapeRegularPentagonホームベース
msoShapeRightArrow右向き矢印
msoShapeRightArrowCallout右向き矢印付き吹出し
msoShapeRightBrace右中括弧
msoShapeRightBracket右大括弧
msoShapeRightTriangle直角三角形
msoShapeRoundedRectangle角丸四角形
msoShapeRoundedRectangularCallout角丸四角形吹出し
msoShapeSmileyFaceスマイル
msoShapeStripedRightArrowストライプ付きの右向き矢印
msoShapeSun太陽
msoShapeTrapezoid台形
msoShapeUpArrow上向き矢印
msoShapeUpArrowCallout上矢印&吹出し
msoShapeUpDownArrow上下2方向矢印
msoShapeUpDownArrowCallout上下2方向矢印&吹出し
msoShapeUpRibbon中央面上のリボン
msoShapeUTurnArrowU字型矢印
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をコピーしました