- ベストアンサー
VBAセルへの他セルのコピペコメント挿入マクロ
- VBAを使用して、A1~A200のセルにD1~D200の値をコピーしたコメントを挿入するマクロを作成したいです。
- コメントには、D1をA1に、D2をA2になど、対応するセルの値を貼り付けたいです。
- Private Sub Worksheet_Changeという記述になると思いますが、上手く動作しません。解決策を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その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
その他の回答 (2)
- kkkkkm
- ベストアンサー率66% (1719/2589)
A1だけで考えると Range("A1").AddComment Range("A1").Comment.Text Text:=Range("D1").Value あとは挿入したいタイミングでRange("A" & i)やRange("D" & i)などとして対応してください。
お礼
ご回答ありがとうございます。 下記で試してみたところ、なぜか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 何か間違っていますか。。? 勉強不足ですみません。
- dell_OK
- ベストアンサー率13% (766/5721)
どのような方法でうまくいかないかがわからないので、「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
お礼
ご回答ありがとうございます! その1とその2は元々あった文章にそのまま繋げてみたところエラーになってしまったのですが、その3で頂いたご回答で見事解決いたしました! ありがとうございます!!!
お礼
ご回答ありがとうございます! 出来ました!まるごとコピペで出来ました! 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^)/