それは私にかなり乗ってくれました。これらの非表示の列はすべてトリッキーです。しかし今はあなたの番です。指示に従ってください。あなたの「コマンド」シートで
、空白の列を見つけて、その下のセル内のセルと、この機能の一つに「すべて表示」を入力します。
="Show "& B5
私はすべての12を持っているあなたを好みますB5:B16の月に1月から3月しかない場合や、オンザフライでコンテンツを変更したい場合はOKです。列Bに関連するデータ(月名または列キャプション)がある場合は、数式をコピーしてください。名前を説明した範囲を指定します。私はそれに "DropdownList"という名前を付けました。名前付き範囲に「スコープ」が「ワークブック」(ワークブックのすべての部分から表示されていることを意味する)であることを確認します。
A4のGRA_Newシートにコマンドボタンを配置します。おそらくあなたはすでに他の場所にボタンを持っています。その場合、私はあなたに一緒に遊んでもう一度作るように依頼します。後でこのボタンを別のシートを含む他の場所に移動できますが、非表示にすることはできません。このコマンドボタンは、検証ドロップダウンになります。
"Allow" = List and
"Source" =DropdownList (including the = mark.
を入力します。これで、第一の位置にある「すべてを表示」、第二の「ショー1月」、およびより「ショー...」という名前の範囲のドロップダウンリストのサイズに依存して示す検証ドロップダウンを持っている必要があります。 「1月を表示」と「すべてを表示」の間にスペースが1つ以上あることを確認してください。2つの単語で構成されるすべての行は関連しています。
"GR_New ..."シートのコードシートに次の手順を追加します。
Private Sub Worksheet_Change(ByVal Target As Range)
'17 Mar 2017
If Target.Address = Range("A4").Address Then
SetDisplay_GRA_NewGen Split(Target.Value)(1)
End If
End Sub
この手順では、確認のドロップダウンがあるセルに参照を「A4」に変更してください。
次の手順は、通常のコードモジュールに入ります。デフォルトではその名前は "Module1"ですが、任意の名前を付けることができます。この手順の2つの宣言のための
Sub SetDisplay_GRA_NewGen(ByVal Cmd As String)
' 17 Mar 2017
Dim Spike As String
Dim CountHidden As Integer
Dim FirstColumn As Long, LastColumn As Long
Dim CapRow As Long, Cap As String
Dim C As Long
CapRow = 4
FirstColumn = 3 ' = column C
With Worksheets("GRA_New_Gen_CI")
LastColumn = .UsedRange.Columns.Count
If StrComp(Cmd, "all", vbTextCompare) Then
With Range("DropdownList")
For C = 2 To .Rows.Count
Cap = Split(.Cells(C).Value)(1)
Spike = Spike & "|" & Cap
Next C
End With
For C = FirstColumn To LastColumn ' count hidden columns
Cap = .Cells(CapRow, C).Value
If .Columns(C).Hidden Then
If .Columns(C).Hidden Or InStr(1, Spike, Cap, vbTextCompare) = 0 Then
' if Cap can't be selected it is counted as not hidden
CountHidden = CountHidden + 1
End If
End If
Next C
Application.ScreenUpdating = False
If CountHidden = 0 Then
' hide all except the specified column
.Range(.Columns(FirstColumn), .Columns(LastColumn)).Hidden = True
End If
For C = FirstColumn To LastColumn
With .Columns(C)
If .Hidden Then
Cap = .Cells(CapRow).Value
If StrComp(Cap, Cmd, vbTextCompare) = 0 Then .Hidden = False
End If
End With
Next C
Else
.Range(.Columns(FirstColumn), .Columns(LastColumn)).Hidden = False
End If
End With
Application.ScreenUpdating = True
End Sub
ルック:
CapRow = 4
FirstColumn = 3
行4は、プログラムが数ヶ月の名前を検索しますここで、あなたのデータシート上の行です。列3(= "C")は、プログラムが月の名前を見つける最初の列になります。列A:Bは決して触られません。
システムが準備完了です。あなたはそれを操作する方法を知る必要があります。 1.ドロップダウンから「すべて表示」を選択すると、FirstColumnから始まるすべての列が表示されます。これをリセットと呼んでください。 2. CapRowでその名前のドロップダウン列から項目を選択すると、その項目が表示されます。 3.別の月を選択すると、すでに表示されている月に追加されます。 4.すべての列がすでに表示されている場合は、選択した列のみが表示されます。
いつでもドロップダウンリストの範囲を変更したり、長くしたり短くしたりすることができます。重要なことは、ドロップダウンの名前がCapRowで利用可能であることです。プログラムはそれらをテキストとして比較します。つまり、「すべて表示」は「すべて表示」と同じ意味です。
@ Variatusこんにちは、ありがとうございます。私は "January"と2月 "と一致するすべての列を再表示する必要があります。1月と2月は列のヘッダーです。 Col C Row 4)。 =) – SANDY