Private Sub Worksheet_Changeという記述になると思いますが、上手く動作しません。解決策を教えてください。
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 という記述になるのかと思いますが、うまくいかないのでどなたかご存じでしたら教えてください。
よろしくお願いします。
その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
質問者
お礼
ご回答ありがとうございます!
出来ました!まるごとコピペで出来ました!
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^)/
ご回答ありがとうございます。
下記で試してみたところ、なぜか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
何か間違っていますか。。?
勉強不足ですみません。
どのような方法でうまくいかないかがわからないので、「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
お礼
ご回答ありがとうございます! 出来ました!まるごとコピペで出来ました! 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^)/