2017-02-15 1 views
0

각 시트의 모든 주석을 읽으려는 시트가 거의 없습니다. 코멘트를 얻을 수 있었지만 댓글이 달린 셀의 같은 행과 열의 첫 번째 셀이 생겼습니다. (첨부 된 사진)VBA - 주석 셀을 선택할 때 첫 번째 셀 가져 오기

red - 셀이 댓글을 달았습니다.

녹색 - 필수 셀 값입니다.

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

관련 문제