2017-09-22 20 views
1

このコードを意図したとおりに動作させることはできません。私は単純な論理エラーだと思う。セル値(VBA)に基づいて行を非表示にして非表示にする

If Worksheets("input").Range("B31").Value = "?TEXT" Then 
    Worksheets("Customer Report").Rows("22").EntireRow.Hidden = True 
    Worksheets("Customer Report").Rows("23").EntireRow.Hidden = False 
Else 
    Worksheets("Customer Report").Rows("23").EntireRow.Hidden = True 
    Worksheets("Customer Report").Rows("22").EntireRow.Hidden = False 
End If 

目標は、シート1のセルB31が「何とか何とかTEXT」が含まれている場合、それはただの行22と非表示の行23を表示するようにし、「何とか何とか」が含まれている場合22とショー行23行非表示にすることです

+0

は "TEXT" は常に最後になりますか? – Moacir

+0

はい、私はワイルドカードが*か? –

答えて

1

Like*をワイルドカードとして使用してください。

Worksheets("input").Range("B31").Value Like "*TEXT"

場合にもする必要はありません。簡単にテストを行うことができます。

Rows().Hidden = 1 = 1

1=1がtrueに解決されると、行が非表示になります。

Rows().EntireRowも冗長です。

Worksheets("Customer Report").Rows("22").Hidden = Worksheets("input").Range("B31").Value Like "*TEXT" 
Worksheets("Customer Report").Rows("23").Hidden = Not Worksheets("input").Range("B31").Value Like "*TEXT" 

我々はさらにタイピング重複の量を減らすことができます。

Dim rng As Range 
Set rng = Worksheets("input").Range("B31") 
With Worksheets("Customer Report") 
    .Rows("22").Hidden = rng.Value Like "*TEXT" 
    .Rows("23").Hidden = Not rng.Value Like "*TEXT" 
End With 
+0

優秀、ありがとう! –

関連する問題