【さっさと戻せ】Excel 365-1906 VBA コメントじゃなくてスレコメだメモとひっくり返すなボケが

#とりあえずExcel2013までのコメントの場所
<b><font color="DarkGreen">校閲</font></b>をクリックして<b><font color="DarkGreen">メモ</font></b>をクリック。コメントと言っているのは偽物です。それはスレコメです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/0d396b9c-5c1c-0b7a-e992-f077119211a6.png)

#スレコメはスレコメ
スレコメ自体がひっくり返されているとか言わないように。スレッド化されたコメントなんだからスレコメでしょうが。

[Excel コメントとメモの違い、使い方と特徴](https://blog-tips.sekenkodqx.jp/2019/02/25/excel-comment-memo00001/)
>Office365のExcelでコメント機能が
アップデートされました。
これまで「コメント」だった機能が
「メモ」に名称変更され
新たな「コメント」としてスレッド機能が
追加実装されています。

こういうのはユーザーをないがしろにした改悪っていう。言葉に注意したほうがいいわ。ほんとうに思い上がったやつらが多い。セキュリティだかシステム監査が利益を生み出しているわけじゃない。単なる保険程度に過ぎない。その辺の立場が分かっていない連中がどうしてこうも多いのか。しかもこんなの思いっきりシステム改ざんじゃないか。どういうリスク評価をしているんだこの業界は。

https://elleneast.com/?p=12287
このブログによると<b>Office 365 solo の場合 Version 1906</b>かららしい。

#いらんわさっさと戻せ

試しにマクロを記録してみると

```vb
Sub Macro1()
' Macro1 Macro
    Range("BS6").AddComment
    Range("BS6").Comment.Visible = False
    Range("BS6").Comment.Text Text:="テスト"
    Range("BS5").Select ’**** 1 従来のコメント VBAのオブジェクト名はそのままで表示がメモ
    Range("BS5").AddComment
    Range("BS5").Comment.Visible = False
    Range("BS5").Comment.Text Text:="Crown Milk:" & Chr(10) & ""
    Range("BS6").Select
    Range("BS5").AddCommentThreaded ("ここに書いてみる")
    Range("BW15").Select ’**** 2 現在のコメント VBAはCommentThreaded
End Sub
```

## [コメントスレッドオブジェクト (Excel)](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded)
    2019/05/15
セル範囲のスレッド化されたコメントを表します。 このオブジェクトは、各セル範囲ごとのトップレベルのコメントまたは応答の両方を表すことができます。
MSはセルの。。。としているがRangeなのでセル範囲が正しい。
###注釈
コメントスレッドオブジェクトは、 CommentsThreaded コレクションのメンバーです。
###例
コメントスレッドオブジェクトを取得するのにには、 Rangeオブジェクトのコメントスレッドプロパティを使用します。 次の使用例は、セル E5 のスレッド化されたコメントのテキストを変更します。

```vb
Worksheets(1).Range("E5").CommentThreaded.Text "reviewed on " & Date
```

######この動きはコメントと同じだ。

CommentsThreadedコレクションから単一スレッドコメントを取得するには、 CommentsThreaded (index) を使用します。引数 indexには、スレッド化されたコメント番号を指定します。 次の使用例は、ワークシート1のスレッド化されたコメント2のテキストを更新します。
```vb
Worksheets(1).CommentsThreaded(2).Text "reviewed on " & Date
```


セル範囲にコメントを追加するには、 rangeオブジェクトの~~addcomment スレッドメソッド~~addcommentthreded Methodを使用します。 次の使用例は、ワークシート1のセル E5 にスレッド化されたコメントを追加します。

```vb
Worksheets(1).Range("E5").AddCommentThreaded "Current Sales"
```

###メソッド
[AddReply](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.addreply)
コメントが最上位レベルのコメントの場合は、返信がCommentThreaded.Replies コレクションに追加されます。
このコメントが返信の場合は、親のCommentThreaded.Replies コレクションに返信が追加されます。

[Delete](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.delete)
[Next](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.next)
戻り値
スレコメ
注釈
トップレベル (親) のスレコメで呼び出された場合、次のスレコメを表す最上位の (親) スレコメオブジェクトを返します。 シートの最後のコメントでこのメソッドを使用すると、次のシートのスレコメではなく、Null 値が返されます。
返信スレコメで呼び出した場合は、スレッドの次の返信スレコメを返します。 このメソッドは、1つのスレッドでのみ機能します。 スレコメの最後のでこのメソッドを使用すると、 Null (次の最上位レベルのスレコメではありません) が返されます。
[Previous](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.previous)
トップレベル (親) のスレコメで呼び出された場合、前のスレコメを表す最上位の (親)スレコメオブジェクトを返します。 このメソッドをシートの最初のスレコメで使用すると、前のシートの最後のスレコメではなく Null 値が返されます。
返信スレコメオブジェクトで呼び出した場合は、スレコメの前の返信スレコメオブジェクトを返します。 このメソッドは、1つのスレコメでのみ機能します。 スレッドの最初の応答でこのメソッドを使用すると、 Null (最上位レベルのコメントではない) が返されます。
つまり下から上に上がったら、次は隣の一番上に行く。シートの最初まで行くとNullになる。
[Text](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.text)
スレッドコメントテキストを設定します。
#####構文
text(text、開始、overwrite)
#####パラメーター

|名前 |必須 / オプション |データ型 |説明|
|:--|:---:|:-----------:|:-------|
|Text |省略可能 |Variant|追加するテキストを指定します。|
|Start|	省略可能 |Variant|文字列を配置する文字の位置番号を指定します。OverwriteパラメーターがTrueまたはblank で、この引数を省略すると、スレッド化されたコメント内の既存のテキストが削除されます。|
|Overwrite|省略可能|Variant|Falseを入力してテキストを挿入します。 既定値はTrueです (テキストは上書きされます)。|

つまりテキストを追加したいときはoverwrite をFalseにして入力すると最後の文字が何文字かわからなくても追記できる。
textがなぜかVariantなのも珍しい。StartもLongではない。
しかし、<b>文字の修飾は全くできない</b>
#####戻り値
String

###プロパティ
####Application
####Creator
####[AuthorProperty(Excel)](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.author)
指定されたコメントスレッドオブジェクトの作成者を表すAuthorオブジェクトを返します。 読み取り専用です
####[CommentThreaded.Date (Excel)](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.date)
スレッドコメントが現地時刻で追加された日付と時刻を表す日付型 (date) の値を返します。 読み取り専用です。
####[CommentThreaded.Replies (Excel)](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.replies)
このコメントが親である場合は、指定されたコメントの子または返信であるコメントスレッドオブジェクトのComment**s**Threadedコレクションを返します (存在する場合)。 返信は、（ローカルの時間で記録された）タイムスタンプで並べ替えられます。
このコメントが子/返信または従来のコメントの場合は、空のコレクションを返します。
##[CommentsThreaded コレクションオブジェクト](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentsthreaded)
ワークシート内の最上位のコメントスレッドオブジェクトのコレクション、または1つのスレッド化されたコメント内の返信のコレクション。
ということは<font color ="RED">Replies Collection</font>などと言っているのはやはりCommentsThreadedコレクションオブジェクトになるらしい。 
###追加するのはRange.AddCommentThreaded なのにコレクションはWorksheet.CommetsThread
つまり追加するときはRangeなのに、追加したとたん、WorkSheetが親になる。

#####コレクションの名称は単純にSをつけずにComment<i>s</i>Threaded 中のCommentが複数形となる。非常に珍しい例。
Item
###プロパティ
Application
[Count](https://docs.microsoft.com/ja-jp/office/vba/api/excel.commentthreaded.addreply)
コレクションに含まれるオブジェクトの数を表す長整数型 (Long) の値を返します。
Creator
Parent

コレクション自体には4プロコレクション（4つしかプロパティがないコレクション、Countしか使えない）

###VBAで操作できない機能 解決
解決するといったんファイルを保存されて、スレコメは不活性化する。その後復活させることもできる。

##デメリットが多すぎて前のコメントに名前を返すべき
Visualをコントロールすることはできない。
形も色も大きさも全くコントロールできないため、コメントを出現させるとシートがその分見えなくなる。
フォントも調節できない。
先に紹介したここを見てほしい。
https://elleneast.com/?p=12287
もはや縦横無尽だ。
わざわざ名前をもとのコメントから奪うとは片腹痛い。スレコメが消えるかさもなければ　　　を本社にまかれてもおかしくないレベル。
しかしスレコメごときでまた時間を浪費した。