2017-12-20 9 views
0

私は年よりも下にあるさまざまな値を持つ行14の年をリストするワークシートを持っています。私は残りの列を隠しながら、彼らが見たい年数を入力できるユーザー入力セルを持っていたいと思います。私はこのコードが単純でなければならないことを知っていますが、実際にこれをコード化する方法を頭に入れておくのは難しい時が来ているようです。動的に列を非表示にするユーザーの入力に基づいて

Sub HideCol() 

Range("F14").Select 

yearSelect = Range("J8").Value 

numrows = Selection.Rows.Count 
numCols = Selection.Columns.Count 

Selection.Resize(numrows + 0, numCols + yearSelect).Select 

Selection.EntireColumnHidden = True 


End Sub 

私は本当に私は列の残りの部分を隠すことに対して選択した領域を隠してる意味、リサイズの逆の後だと思う:私は、次の試みてきました。そうでない場合は、あなたが入力セルを非表示にするリスクを実行し、私は正しくあなたの質問を理解していれば、列Fの前に別の列にあなたの年間の入力セルを変更、事前に

答えて

1

をいただきありがとうございます:)

次に内でこのコードを配置データがあるワークシートモジュール。データの必要に応じてコードの範囲を調整します。

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = Me.Range("D8").Address Then 'i moved input cell to D8 

     Application.ScreenUpdating = False 

     Range("F14:Z14").EntireColumn.Hidden = False 'this range is the total for the number of years you have 

     Dim hideYears As Range 
     Set hideYears = Me.Range("F14").Offset(0, Target.Value) 
     Set hideYears = Range(hideYears, hideYears.End(xlToRight)) 

     hideYears.EntireColumn.Hidden = True 

    End If 

End Sub 
+0

ありがとう、スコット。美しい作品。私はコードを理解しようとしています。コード内の「私」とは何ですか? – jules325

+1

@ jules325 'Me'は、コードが存在するオブジェクトです(この場合はワークシートです)。それは本当に必要なわけではありませんが、時には、すべてのオブジェクトをその親に適格にする習慣からとにかく使用することがあります。 –

+0

素晴らしいです、本当にありがとうございます。ありがとう、 – jules325

関連する問題