2017-03-01 3 views
1

저는 ColumnC에서 사용 된 모든 셀을 보려고합니다. ColumnC의 특정 셀에 'Row 2'에서 'Row 15'와 같은 문자열이 포함 된 경우 해당 행을 숨 깁니다. 다음은 내가 다루는 코드이지만, 예상했던대로 작동하지 않습니다.셀을 반복하고 배열을 반복하는 방법과 일치하는 행을 숨기려면 어떻게해야합니까?

Sub Hide_Rows() 
Dim cell As Range 
Dim Mainfram(13) As String 

    Mainfram(0) = "Day 2" 
    Mainfram(1) = "Day 3" 
    Mainfram(2) = "Day 4" 
    Mainfram(3) = "Day 5" 
    Mainfram(4) = "Day 6" 
    Mainfram(5) = "Day 7" 
    Mainfram(6) = "Day 8" 
    Mainfram(7) = "Day 9" 
    Mainfram(8) = "Day 10" 
    Mainfram(9) = "Day 11" 
    Mainfram(10) = "Day 12" 
    Mainfram(11) = "Day 13" 
    Mainfram(12) = "Day 14" 
    Mainfram(13) = "Day 15" 

    lrow = Cells(Rows.Count, 1).End(xlUp).Row 

    For i = 2 To 15 
    For Each cell In Range("C1:C" & lrow) 
     pos = InStr(1, cell.Value, Mainfram(i)) 
     If pos > 1 Then 
      cell.EntireRow.Hidden = True 
     End If 
    Next 
    Next i 
End Sub 
+1

'pos> 1 대신'pos> 0' 시도하십시오 –

답변

2

이 작동합니다 :

Option Explicit 

Sub Hide_Rows() 

    Dim cell   As Range 
    Dim Mainfram(13) As String 
    Dim lRow   As Long 
    Dim i    As Long 
    Dim pos    As Long 

    Mainfram(0) = "Day 2" 
    Mainfram(1) = "Day 3" 
    Mainfram(2) = "Day 4" 
    Mainfram(3) = "Day 5" 
    Mainfram(4) = "Day 6" 
    Mainfram(5) = "Day 7" 
    Mainfram(6) = "Day 8" 
    Mainfram(7) = "Day 9" 
    Mainfram(8) = "Day 10" 
    Mainfram(9) = "Day 11" 
    Mainfram(10) = "Day 12" 
    Mainfram(11) = "Day 13" 
    Mainfram(12) = "Day 14" 
    Mainfram(13) = "Day 15" 

    'you are with C 
    lRow = Cells(Rows.Count, 3).End(xlUp).Row 

    For i = LBound(Mainfram) To UBound(Mainfram) 
     For Each cell In Range("C1:C" & lRow) 
      pos = InStr(1, cell.Value, Mainfram(i)) 
      Debug.Print pos 

      If pos >= 1 Then 
       cell.EntireRow.Hidden = True 
      End If 

     Next 
    Next i 

End Sub 

몇 가지 실수를 코드에서 :

  • If pos >= 1 Then는 당신이 필요로하는 것입니다.
  • i = 15로 가서 만 Mainfram (13)까지 선언 한 경우 이 배열의 경계를 벗어났다는 불쾌한 오류가 발생합니다.
  • LBoundUbound은 입니다. 배열 주위를 순환하는 좋은 방법입니다.
  • 마지막으로, 당신은하지 A.

환호에, 아마 C의 마지막 값을 찾아야합니다!

+0

그게 전부입니다! 정말 고마워!! – ryguy72

+0

@ ryguy72 - 당신은 환영합니다 :) – Vityata

관련 문제