こんにちは、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

