2017-05-02 6 views
0

ドロップダウンボックスで選択した内容に基づいてシート上に非表示の行を表示したいとします。値は列2にあり、名前です。名前を選択できるすべての非表示行の下のセル(C9)にドロップダウンリストがあり、名前が含まれる行が表示されます。セル内のドロップダウンリストに基づいて列内の値でExcelの行を再表示する方法

これまでのところ、私は与えられた名前を持つ行を再表示することができますマクロのコードを持っている:

Sub Mike() 
    BeginRow = 1 
    EndRow = 6 
    ChkCol = 2 

    For RowCnt = BeginRow To EndRow 
     If Cells(RowCnt, ChkCol).Value = "Mike" Then 
      Cells(RowCnt, ChkCol).EntireRow.Hidden = False 
     End If 
    Next RowCnt 
End Sub 

そして私は、セルのドロップダウンの値ならば、マクロは、個々のマクロを呼びすることができますが名前です。しかし、名前のリストは変更されるので、名前に依存しないマクロが必要です。私はその値をセルC9にあるものにするようにコードを置き換えようとしましたが、マクロはエラーなしで実行されますが、何もしません。

Sub ShowRows() 
    BeginRow = 1 
    EndRow = 6 
    ChkCol = 2 

    For RowCnt = BeginRow To EndRow 
     If Cells(RowCnt, ChkCol).Value = C9 Then 
      Cells(RowCnt, ChkCol).EntireRow.Hidden = False 
     End If 
    Next RowCnt 
End Sub 
+0

'Ceの場合はlls(RowCnt、ChkCol).Value = Range( "C9")。Value Then'構文はオフです。 Option Explicitをオンにした場合は、エラーが発生しているはずです。 – SJR

答えて

0

C9はこのようにVBAには意味がありません。空の変数であるとみなします。 あなたは、「C9」と呼ばれているセルが必要です。

Range("C9") 

をそして、あなたはそのセル(ではない、例えば、背景や枠線の色)から値を必要とする:

Range("C9").Value 

ので試してみてください。

If Cells(RowCnt, ChkCol).Value = Range("C9").Value Then 
0
Sub Mike() 
BeginRow = 1 
EndRow = 6 
ChkCol = 2 

For RowCnt = BeginRow To EndRow 
    If Cells(RowCnt, ChkCol).Value = Range("C9").Value Then 
     Cells(RowCnt, ChkCol).EntireRow.Hidden = False 
    End If 
Next RowCnt 

End Subの

関連する問題