こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA セルに他セルをコピペしたコメントを挿入 

A1~A200のセルに、D1~D200の値をそれぞれコピーしたコメントを挿入するマクロを作ろうとしています。

A1に、何も書いていないコメントを挿入することはできました。
Dim i As Long
For i = 1 To 200
Range("A" & i).AddComment
Range("A" & i).Comment.Visible = False
Next i
End Sub

このコメントに、D1~D200の値を貼り付けたい場合は(A1にはD1の値を、A2にはD2の値といった具合)どのように書けばよいのでしょうか?

Private Sub Worksheet_Change という記述になるのかと思いますが、うまくいかないのでどなたかご存じでしたら教えてください。


よろしくお願いします。

投稿日時 - 2020-09-22 15:35:12

QNo.9802566

困ってます

質問者が選んだベストアンサー

その3。
「Worksheet_Change」だと関係のないセルを変更した時もなんだかチラチラと動作して操作性が落ちるので、
もし任意のタイミングで実行するのでよければ。
Public Sub SetComment()
Dim i As Long
For i = 1 To 200
If Range("A" & i).Comment Is Nothing Then
Range("A" & i).AddComment Range("D" & i).Text
Else
Range("A" & i).Comment.Text Range("D" & i).Text
End If
Next i
End Sub

投稿日時 - 2020-09-22 16:21:33

お礼

ご回答ありがとうございます!

出来ました!まるごとコピペで出来ました!
Public Sub SetComment()
Dim i As Long
For i = 1 To 200
If Range("A" & i).Comment Is Nothing Then
Range("A" & i).AddComment Range("D" & i).Text
Else
Range("A" & i).Comment.Text Range("D" & i).Text
End If
Next i
End Sub

ありがとうございます!
これで明日から残業が減りますよ~!(^O^)/

投稿日時 - 2020-09-22 21:20:23

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

A1だけで考えると
Range("A1").AddComment
Range("A1").Comment.Text Text:=Range("D1").Value
あとは挿入したいタイミングでRange("A" & i)やRange("D" & i)などとして対応してください。

投稿日時 - 2020-09-22 16:15:36

お礼

ご回答ありがとうございます。
下記で試してみたところ、なぜかA1のコメントにD11の値が貼り付き、且つA10以降はコメントが空白になっていました。

Sub Macro1_1()
Dim i As Long
For i = 1 To 200
Range("A" & i).AddComment
Range("A" & i).Comment.Text Text:=Range("D1" & i).Value
Range("A" & i).Comment.Visible = False
Next i
End Sub

何か間違っていますか。。?
勉強不足ですみません。

投稿日時 - 2020-09-22 21:15:48

ANo.1

どのような方法でうまくいかないかがわからないので、「Worksheet_Change」をヒントに回答します。

その1。
D列(4列目)の1行目から200行目が変更される度にその行のA列のコメントを変更する。
先に空のコメントを準備されているようなのでこれでできると思います。
If Target.Column = 4 And Target.Row >= 1 And Target.Row <= 200 Then
Cells(Target.Row, 1).Comment.Text Target.Text
End If

その2。
どのタイミングで空のコメントを準備しているのかわかりませんが、
開く時だと毎回になってしまうし、
手作業で一度だけ実行しているのならそれも手間かと思って、
先に空のコメントを準備しない方法。
コメントがなければ追加、あれば変更しています。
If Target.Column = 4 And Target.Row >= 1 And Target.Row <= 200 Then
If Cells(Target.Row, 1).Comment Is Nothing Then
Cells(Target.Row, 1).AddComment Target.Text
Else
Cells(Target.Row, 1).Comment.Text Target.Text
End If
End If

投稿日時 - 2020-09-22 16:10:34

お礼

ご回答ありがとうございます!

その1とその2は元々あった文章にそのまま繋げてみたところエラーになってしまったのですが、その3で頂いたご回答で見事解決いたしました!

ありがとうございます!!!

投稿日時 - 2020-09-22 21:22:10

あなたにオススメの質問