2017-11-15 24 views
1

範囲内の特定のセルに条件を満たしているコメントを追加しようとしています。だから私は情報が格納されているシート1のリストを持っています。また、私は列Uにコメントをしたいsheet16上のセルの値を持っているので、それは私が範囲内の特定のセルにコメントを追加します。 Excel VBA

アプリケーション定義またはオブジェクト定義のエラー

どれを得続ける行U.にF6を言うだろう思考?

ありがとうございました。

Sub Comments() 

    Dim rcell As Range 

    Sheet16.Range("C6:AR17").ClearComments 

    For Each rcell In Sheet1.Range("A2:A" & Sheet1.Range("A" & Sheet1.Rows.CountLarge).End(xlUp).Row) 
     If rcell.Offset(0, 1).Value(10) = Sheet7.Range("G1").Value(10) Then 
      commentvalue = rcell.Offset(0, 4).Value 
      Sheet16.Range("U" & rcell.Row).AddComment (commentvalue) 
     End If 
    Next rcell 

End Sub 
+1

'.Value(10)'とは何ですか? – PatricK

+1

その範囲の値のデフォルトは、あなたは本当にそこに置く必要はありませんが、私は普通のやり方でそれを学んだ方法です。私はまた、私が追加しようとしていることは、テキストでセルへの参照を調整するときのように数字であることを認識しています。 – Cooper

+2

DefaultValueを取得するのには役に立たないものを考えました。 'rcell'にすでにコメントがある場合、それは失敗します。 '' U '&rcell.Row'は明確なコメントの範囲( "C6:AR17")の中に入っていますか? – PatricK

答えて

1

AddCommentメソッドは、既にセルにコメントがあると失敗します。このようにそれを実行します。Jeepedさんのコメント@を1として

Sub Comments() 
    Dim rcell As Range 
    Dim commentvalue As String 

    Sheet16.Range("C6:AR17").ClearComments 

    For Each rcell In Sheet1.Range("A2:A" & Sheet1.Range("A" & Sheet1.Rows.CountLarge).End(xlUp).row) 
     If rcell.Offset(0, 1).Value = Sheet7.Range("G1").Value Then 
      commentvalue = CStr(rcell.Offset(0, 4).Value) 

      With Sheet16.Range("U" & rcell.row) 
       .ClearComments '<=== :-) 
       .AddComment commentvalue 
      End With 
     End If 
    Next rcell 
End Sub 

編集

、あなたは "CUMULATE" のコメントにしたいこと。私の前提は、コードを一度実行した後、再度実行して、最初の実行でコメントが作成されたためにエラーが発生したということでした。達成しようとする内容に応じて、列Uのコメントを2行目から最後の行までループ内で体系的にクリアし、ループ内の.ClearCommentsを削除して、毎回きれいにすることができます。それは最も簡単なケースです。もっと複雑なことがあれば、細かいことを考えさせます。

+1

で@PatricKで "RangeValueDataType"を検索するか、Chr(10)で区切られた既存のコメントを追加できます。 – Jeeped

+1

@Jeeped確かに... OPが累積したいかどうかによって異なります。 – Excelosaurus

関連する問題