2016-08-08 7 views
0

私は同様の質問に対するいくつかの回答を見つけましたが、私の人生のためにこの仕事をすることはできません。私は自動的にセルの入力に基づいて行を非表示にしようとしています。私は列AからJまでのデータを持っていますが、列Kに値を入力する行を自動的に隠したいと思います。これができると確信していますが、私はVBAマクロを動作させるために努力しています!条件に基づいてExcelで行を自動的に隠す

ご協力いただければ幸いです。

ありがとうございます!

+1

から値を削除する場合は、あなたがこれまでに試したものを投稿してください、そしてあなたがそのアプローチをしようとしたときに正確に失敗しました。 。 – Mikegrann

+0

@Matt Marshal ...私は以下の答えを投稿しましたが、Mikegrannがあなたに語っていることはあなたがここで初心者であることを認めています。あなたが試したコードを投稿して、うまくいきません。誰でもあなたを助けるためにここにいる。 – dinotom

+0

申し訳ありません。私はStackOverflowを検索して見つけたいくつかのアイテムを試しました。私はそれをすべて削除し、新鮮に始めることを決めました。 私はこれから投稿することができるように、私が今からやることを保存します。 ありがとう! –

答えて

2

シートにワークシートの変更イベントが必要です。あなたはそれが行全体を非表示になりますk個の列の任意のセルの値を変更すると あなたのシート

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 11 Then ' Column K is column number 11 
     Target.EntireRow.Hidden = True 
    End If 
End Sub 

のコードセクションにこのコードを入れてください。
UsedRangeでのみ動作させたい場合は、そのように動作するようにコードを編集することもできます。

+0

ユーザーが削除キーを押すとどうなりますか?行はまだ隠されませんか? – Davesexcel

+0

OPは、削除キーが押されているのではなく、セルに入力されているものを検出したいと言っていました。 – dinotom

+0

ありがとう!これはうまくいった! –

0

これを試してください。列Kのすべてのセルをループし、任意のテキストでセルを非表示にします。

Sub AutoHideRows() 
'Get the last row of the used range 
    Dim LastRow As Long 
    LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row 

'Loop through the range looking for non-blank values, and hide those rows 
    Dim c As Range 
    For Each c In Range("K1:K" & LastRow) 
     If c.Value <> "" Then 
      c.EntireRow.Hidden = True 
      Else 
      c.EntireRow.Hidden = False 
     End If 
    Next c 
End Sub 

データの最初の行に列見出しが含まれており、フィルタから除外したい場合は、このコード行に変更します。これに

For Each c In Range("K1:K" & LastRow) 

For Each c In Range("K2:K" & LastRow) 

をお役に立てれば!

+0

こんにちは、 お返事ありがとうございます。私はこれを試して、何か(アルファまたは数値)を列Kの任意のセルに入れても何も起こりません。 何か他に何かする必要がありますか? –

+0

あなたの例では、ループの代わりに 'specialcells'を使うことができます。' Range( "K2:K"&lastrow).SpecialCells(xlCellTypeConstants、23).EntireRow.Hidden = 1' – Davesexcel

0

@dinotomの回答のバリエーションです。それはあなたが列Kに値を入力すると、行全体を隠しではなく、あなたが列K.

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 11 And Target.Value <> "" Then ' Column K is column number 11 
     Target.EntireRow.Hidden = True 
    End If 
End Sub 
関連する問題