2017-10-23 11 views
-2

데이터베이스를 검색하여 내 질문에 대답했지만 비슷한 상황을 찾을 수 없습니다. 첫 번째 4 개의 워크 시트는 표시된 성 및 동일 범위/빈 셀 수에있어 항상 동일합니다. 마지막 3 개의 워크 시트는 똑같은 범위/빈 셀 #과 동일한 상황을 가지지 만 범위는 시트 1-4와 다릅니다. 모든 시트 열 A 셀 값을 기반으로 전체 행을 숨기려면 VBA 쓸 찾고 있습니다. 열 A의 셀에는 수식이 채워집니다.7 개 시트의 셀 값을 기준으로 행 숨기기 VBA

워크 시트 1-4 범위 A9-A58 :

Column A 
Johnson    
Peterson 
Anderson 
(empty) 
(empty) 
(empty) 

워크 시트 5-7 범위 A16-A65 :

Column A 
Johnson 
Peterson 
Anderson 
(empty) 
(empty) 
(empty) 

결과 나는 모든 워크 시트를 찾고 있어요 :

Column A 
Johnson 
Peterson 
Anderson 

다음은 시도한 코드입니다.

Sub Macro1() 
' 
' Macro1 Macro 
' 


    Sheets("Sheet 1").Select 
    Rows("19:58").Select 
    Selection.EntireRow.Hidden = True 
    Sheets("Sheet 2").Select 
    Rows("19:58").Select 
    Selection.EntireRow.Hidden = True 
    Sheets("Sheet 3").Select 
    Rows("19:58").Select 
    Selection.EntireRow.Hidden = True 
    Sheets("Sheet 4").Select 
    Rows("19:58").Select 
    Selection.EntireRow.Hidden = True 
    Sheets("Sheet 5").Select 
    Rows("26:65").Select 
    Selection.EntireRow.Hidden = True 
    Sheets("Sheet 6").Select 
    Rows("26:65").Select 
    Selection.EntireRow.Hidden = True 
    Sheets("Sheet 7").Select 
    Rows("26:65").Select 
    Selection.EntireRow.Hidden = True 
End Sub 

문제는 수동으로 빈 행을 선택하고 시트를 한 장씩 이동시켜 작동시켜야한다는 것입니다. 각 시트의 특정 범위 내에서 셀 값을 기반으로 빈 행을 숨길 수있는 것이 있으면 좋을 것입니다.

저는 VBA가 화면 업데이트 또는 자동 필터링 여부에 관계없이 어떻게 작성되는지 공개합니다. 도움/전문 지식에 감사드립니다.

+1

이렇게 시도한 코드를 제공해주십시오. 스택 오버플로는 코딩 문제를 해결하기위한 협업 웹 사이트입니다. 그것은 당신을위한 코드 서비스가 아닙니다. 시작하는 데 문제가있는 경우 Excel의 * Developer * 탭에서 * Macro Recorder *를 사용하십시오. 원하는 결과를 수행 한 다음 생성 된 코드를 검토하십시오. 또한 For 루프 또는 For Each 루프를 조사하여 행 사이 및 시트 사이에서 루핑을 설명 할 수 있습니다. – Cyril

+0

@Cyril - 내가 시도한 코드를 반영하도록 원본 게시물을 업데이트했습니다. – Hery0502

+0

루프가 작동하는 방식을 살펴 보았습니까? 특히 For 루프? 그것은 당신이가는 곳을 얻는 가장 간단한 개념입니다. 나는 당신에게 첫 번째 시트를위한 초보자를 줄 수 있으며, 그 다음에 많은 시트에 논리를 적용 할 수 있어야한다. – Cyril

답변

1

내 의견에 따라 루프가 작동하는 시작 지점이 제공됩니다.


먼저 매개 변수 7 개, 정의 된 범위 2 개를 배치합니다. 범위로 시작해 보겠습니다 :

Dim aStart as Long, aStop as Long, bStart as Long, bStop as Long 
aStart = 19 
aStop = 58 
bStart = 26 
bStop = 65 

그래서 행에 의해 몇 가지 범위가 표시됩니다 (첫 번째 범위는 a, 두 번째 범위는 b). 이제 뭐? 당신은 특별히

Dim i as Long 
For i = aStart to aStop 
    If Cells(i, "A").Value = "" Then 
     Rows(i).EntireRow.Hidden = True 
    End If 
Next i 

은 아주 간단 보인다 열 A에,이 데이터를 포함 여부를 결정하기 위해, 루프 일명, 그들 사이의 각각의 행을보고 싶어, 나는 희망한다. 루프는 행 A를 한 번에 하나씩 반복하면서 i를 행으로 사용합니다.

이것은 bStart/bStop과 매우 유사합니다. 단 하나의 추가 작업은 시트 이름/번호에 따라 수행됩니다. 내가 매크로를 기록한 것에 기초하여, 지금까지 많은 것을 제공했듯이, 그러한 일이 일어날 수있는 많은 방법이 있으며, 그것을 여러분에게 맡기고 소용돌이 치게 할 것입니다.