2017-02-15 3 views
0

各シートからすべてのコメントを読みたいシートがあります。 私はコメントを得ることができましたが、私が得ることができるのは、コメントのセルの同じ行と列の最初のセルです(添付写真)VBA - コメントセルが選択されたときに最初のセルを取得します。

赤いコメントのセル。

緑 - 必要なセル値。

enter image description here

Sub ShowCommentsAllSheets() 
    'Update 20140508 
    Dim commrange As Range 
    Dim rng As Range 
    Dim ws As Worksheet 
    Dim newWs As Worksheet 
    Set newWs = Application.Worksheets("CRs") 
    newWs.Range("A1").Resize(1, 4).Value = Array("Sheet", "A", "Value", "Comment") 
    Application.ScreenUpdating = False 
    On Error Resume Next 
    For Each ws In Application.ActiveWorkbook.Worksheets 
     Set commrange = ws.Cells.SpecialCells(xlCellTypeComments) 
     If Not commrange Is Nothing Then 
      i = newWs.Cells(Rows.Count, 1).End(xlUp).Row 
      For Each rng In commrange 
       i = i + 1 
       newWs.Cells(i, 1).Resize(1, 4).Value = Array(ws.Name, rng.Address, rng.Value, rng.Comment.Text) 
      Next 
     End If 
     Set commrange = Nothing 
    Next 
    newWs.Cells.WrapText = False 
    Application.ScreenUpdating = True 
    End Sub 
+0

FYI - 'newWS'がActiveSheetでない場合、 'Rows.Count'は別のシートで実行されます。 'NewWS'の行を数えたいと仮定して、行を' i = newWs.Cells(newWS.Rows.Count、1).End(xlUp).Row'に変更します。 Dateセルを入手できますか?列Bで同じ行のセルを取得する方法を見たいですか? – BruceWayne

+0

コードに誤りがあるか、間違ったことをしていますか? @BruceWayne - それは良い習慣だということに同意しますが、実際には各シートの行数が同じであることを考えれば問題ありませんか? – SJR

+0

はい、正確には、私はDateセルを取得することができ、私は同じ行のセルを取得したいと思います。 – David

答えて

1

おそらく、ちょうどこの行を変更?

newWs.Cells(i, 1).Resize(1, 5).Value = Array(ws.Name, rng.Address, rng.Value, rng.Comment.Text, ws.Cells(rng.Row, 2)) 
+0

ありがとう、完璧な作品! – David

関連する問題