2017-04-22 10 views
-1

私はVBAコードを書くことで初心者だ - あなたはより効率的に、この非表示の列コードを書く方法を私に助言することができれば、私はgeatfull次のようになります。これは、列コードを非表示にしてより効率的に書くことができますか?

コードの目的がある:列F4のセルがある場合が空のの場合は、Fなどの列を非表示にします。

Private Sub Worksheet_Change(ByVal Target As Range) 

If Range("F4").Value = "" Then 
    Columns("F").EntireColumn.Hidden = True 
Else 
    Columns("F").EntireColumn.Hidden = False 
End If 

If Range("G4").Value = "" Then 
    Columns("G").EntireColumn.Hidden = True 
Else 
    Columns("G").EntireColumn.Hidden = False 
End If 

If Range("H4").Value = "" Then 
    Columns("H").EntireColumn.Hidden = True 
Else 
    Columns("H").EntireColumn.Hidden = False 
End If 

If Range("I4").Value = "" Then 
    Columns("I").EntireColumn.Hidden = True 
Else 
    Columns("I").EntireColumn.Hidden = False 
End If 

If Range("J4").Value = "" Then 
    Columns("J").EntireColumn.Hidden = True 
Else 
    Columns("J").EntireColumn.Hidden = False 
End If 

If Range("K4").Value = "" Then 
    Columns("K").EntireColumn.Hidden = True 
Else 
    Columns("K").EntireColumn.Hidden = False 
End If 

If Range("L4").Value = "" Then 
    Columns("L").EntireColumn.Hidden = True 
Else 
    Columns("L").EntireColumn.Hidden = False 
End If 

If Range("M4").Value = "" Then 
    Columns("M").EntireColumn.Hidden = True 
Else 
    Columns("M").EntireColumn.Hidden = False 
End If 

End Sub 
+0

:-)

Sub Hide_Columns() Dim c As Range For Each c In Range("F4:K4").Cells If c.Value = "" Then c.EntireColumn.Hidden = True End If Next c End Sub 

おかげでそれが列を非表示するために奇妙なように'Change'イベントがあるときはいつでも。 – YowE3K

答えて

2

〜13列6間のループは、物事を向上することがあります:この

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim c As Long 
    For c = 6 To 13 
     Columns(c).EntireColumn.Hidden = IsEmpty(Cells(4, c).Value) 
    Next 
End Sub 
+0

'.Hidden'が' IsEmpty() 'に基づいているのは、別の' IF'文を使う代わりに、 'TRUE'または' FALSE'を返すので好きです。私は本当に私のマクロでもっと注意を払う必要がありますが、そのようなことは非常に効率的です! – BruceWayne

+0

@ YowE3Kありがとう、これは素晴らしい作品です! –

+1

@BruceWayne - 私はもともとその行を '... = Cells(4、c).Value =" "'(これは 'True'または' False'を返します) 'IsEmpty'がそれをより適切にコーディングする方法であると判断しました。 – YowE3K

0

チェックイン: -

+0

私はVBAコードを拡張しようとしています - しかし、2番目の部分は動作しません。 'プライベートサブWorksheet_Change(ByValの対象を範囲) 薄暗いCのロング 薄暗いデルタ限り、C = 6 13に列(C).EntireColumn.Hidden =のisEmpty(セル(4、C).Valueの) 次にについて delta = 17の場合22 列(delta).EntireColumn.Hidden = IsEmpty(Cells(4、c).Value) 次 End Sub' –

関連する問題