Excel (VBA)

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

 
(指定なし : 指定なし)
RE: コメントの位置を指定する
投稿日時: 22/01/19 07:09:31
投稿者: simple

「コメントの位置を指定する」
https://www.moug.net/faq/viewtopic.php?t=81176
について、追記します。
 
解決されたのでしょうか。
 
既に適切な回答がされていましたので、Rangeオブジェクトの誤解に限定してコメントしましたが、
あえて追記すれば、以下のようなことになると思います。
 
既に指摘がありましたように、

(1)マウスをそのセルの上に置いたときに自動で表示されるコメントの位置と、
(2)「コメントの表示/非表示」や「すべてのコメントの表示」を
   クリックしたときに表示されるコメントの位置
は異なります。
(異なる位置を指定できます、といったほうが適切かも)
 
(1)の場合のコメントの位置は、Excelが独占的に決めており、
   マクロではコントロールできないと思います。(2)での指定にも影響を受けません。
   (そうしたニーズは乏しい、または、設定可能とすると整列させる機能とかも必要となり、
     オーバースペックになるとMS社は判断しているものと推定される)
(2)ユーザーがコントロールできるのは、後者のほうだけです。
 

したがって、(1)については、基本的にコントロール不能なので、
引用:
19行目で分割をしております。
分割をしている、最初の行のコメントが特にみづらく
なるため、今回の質問をさせていただきました。
であれば、19行目ではなく、20行目にコメントをつければよい、というのが大人の対応だろうと思います。
もしくは、19行目にセットしても、見にくいといっても読めないわけじゃなく、
それを甘受するのもひとつの考え方でしょう。
 

どうしてもということであれば、
・マクロで表示位置を指定したうえで(すでにできていると思います)、
・「コメントの表示/非表示」を使えば、自分で指定した位置に表示できます。
ただし、今のセル位置から離れて、その都度ボタンをクリックしに行くのは手間かもしれません。
 
これを避けようとすれば、ダブルクリックしたときの特別の動作を仕組み、
指定した位置で、コメントの表示/非表示する機能を、
ダブルクリックで代替させる方法が採れるでしょう。
 
以下のイベントプロシージャを
・当該シートのシートモジュールに書けばよいと思います。
 (多数のシートであれば、BookレベルのものをThisWorkBookモジュールに書きます)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("A19")) Is Nothing Then Exit Sub
    Dim mode As Boolean
    mode = Application.EditDirectlyInCell
    Application.EditDirectlyInCell = False
    Cancel = True
    Target.Comment.Visible = Not Target.Comment.Visible 
    Application.EditDirectlyInCell = mode
End Sub
(ただし、副作用として、「セルを直接編集」することはできなくなります。)
 
# まあ、余り凝ったことをせずに、既定のもので対応するのがよいと、私は思います。

投稿日時: 22/01/19 15:44:29
投稿者: simple

閉じます。