日本語入力ソフトとVBAの覚え書き

・各種日本語入力ソフトの辞書解説 ・ちょっと楽になるExcel VBA集

InputBoxを使ってコメントを作成する(非表示オプション付き)

f:id:dz_dzone:20170814233145j:plain

コメントを作成するとき、通常「コメントの挿入>内容を編集>場合によって非表示に設定」という流れです。現在仕事でやっている作業では大量の非表示コメントをどんどんつけていくということをやっており、通常の方法では非常に面倒くさいです。そこで、InputBox関数を使ってコメントを作成し、簡単な方法で表示と非表示を選べるコードを書いてみました。

f:id:dz_dzone:20171124111735j:plain

コード

Sub AddKome()
  ' ** コメントを追加する **
  
  If TypeName(ActiveCell.Comment) = "Comment" Then
    MsgBox "既にコメントがあります。", vbOKOnly + vbExclamation
    Exit Sub
  End If
  
  Dim CL As Range
  Dim StrComment As String
  Dim RTmp As Variant
  Dim BoolVisibleComment As Boolean
  
  StrComment = InputBox("コメント? (文末に ` を入れると非表示)", "コメントを追加")
  
  ' ** キャンセル処理
  If StrPtr(StrComment) = 0 Then    'キャンセルボタン
    Exit Sub
  ElseIf StrComment = "" Then       '空白入力
    Exit Sub
  End If
  
  ' ** 文末に'`'が入っていたらコメントを非表示で追加する
  If Right(StrComment, 1) = "`" Then
    RTmp = Split(StrComment, "`")
    StrComment = RTmp(0)
    BoolVisibleComment = False
  Else
    BoolVisibleComment = True
  End If
  
  For Each CL In Selection
    ' ** コメントの追加
    With CL.AddComment(StrComment)
      .Visible = True
    End With
        
    ' ** コメントの書式等
    With CL.Comment
      .Shape.Fill.ForeColor.RGB = RGB(255, 255, 0)
      With .Shape.TextFrame
        .Characters.Font.Size = 9
        .AutoSize = True
      End With
      .Visible = BoolVisibleComment
    End With
  Next CL
End Sub
  • 既にコメントがある場合は警告して終了
  • 空白のままOKした場合キャンセル扱いとして終了
  • 文末に ` (Shift + @)が入っていたらコメントを非表示で追加する処理
  • 範囲選択の場合は同じコメントを一斉入力

既にコメントがある場合

f:id:dz_dzone:20171124111755j:plain

コメントを追加

f:id:dz_dzone:20171124111808j:plain

f:id:dz_dzone:20171124111820j:plain

コメントを非表示で追加

f:id:dz_dzone:20171124111829j:plain

f:id:dz_dzone:20171124111842j:plain

以上。

にほんブログ村 IT技術ブログ VBAへ←記事を気に入って頂けたらポチッとしてもらえると励みになります。