2014-11-15 5 views
0

이 코드가 정중하지 않아서 알 수없는 규칙으로 내 열을 숨기는 이유는 무엇입니까? CBool로 숨기기 열이 작동하지 않습니다.

for c = 1 to .columns.count 
     .columns(c).entirecolumn.hidden = not cbool(application.counta(.columns(c))) 

V1

Sub EmptyCol() 
Call UnlockS 

Dim Table As Range:  Set Table = Range("O_List") 
Dim Col As Range 
Dim Emp As Boolean 

Dim c As Long 
'Table.Columns.hide = False 
With Table 
    For c = 4 To .Columns.Count 
    Set Col = .Columns(c) 
     If (Application.CountIf(Col, "")) = (.Rows.Count) Then Emp = True 
     .Columns(c).EntireColumn.Hidden = CBool(Emp) 

    Next c 
End With 

Call L_ORDER 
End Sub 

내 이전 게시물에서 코드를 편집 할 수 있지만 지금은 그것이 작동하지 않는 것을 알고있다. 빈 칸도 숨 깁니다. Thx 당신의 도움.

+1

매 루프마다 Emp가 false로 재설정되지 않습니다. 그러나 Emp를 전혀 사용할 필요가 없습니다. Emp가 부울이기 때문에'CBool ​​(Emp)'도 중복됩니다. 대신에 If (Application.CountIf (Col, "")) ... 등등을 시도해보십시오 .Columns (c) ... etc.Hidden = True : End If' –

+0

thx, 그냥 new function =)을 배우고 싶습니다. ,하지만 여전히'(Application.CountA (.Columns (c)) = 0)'이'rows.count' 값을 반환하고 True 값을주는 방식을 이해하지 못합니다. 그렇지 않다면 아래 답변이 잘못되었습니다 .-) –

답변

1

엠펙을 다시 거짓으로 설정하는 부분이 표시되지 않습니다. if에 대해 긍정적 인 결과를 얻으면 그 시점부터 모든 열을 숨길 것입니다.

+0

아 고마워요 =) –

1
Sub EmptyCol() 
    Call UnlockS 

    Dim Table As Range:  Set Table = Range("O_List") 
    Dim Col As Range 
    Dim Emp As Boolean 

    Dim c As Long 
    Table.Columns.Hidden = False 
    With Table 
     For c = 4 To .Columns.Count 
      .Columns(c).EntireColumn.Hidden = _ 
         (Application.CountA(.Columns(c)) = 0) 
     Next c 
    End With 

    Call L_ORDER 
End Sub 
관련 문제