2014-12-02 103 views
0

我有一個包含兩個文本框的用戶表單...文本框允許用戶輸入'from'和'to'值。 我想隱藏「AH」列中單元格值大於或等於「from」值且小於或等於「to」值的所有行。基於用戶表單文本框的值隱藏行

我試過以下但我沒有隱藏行嗎?

Sub Worksheet_Calculate() 

Dim LastRow As Long, c As Range 

LastRow = Cells(Cells.Rows.Count, "AH").End(xlUp).Row 

For Each c In Range("AH3:AH1000") 

    If (c.Value >= UserForm1.TextBox1.Value And c.Value <= UserForm1.TextBox2.Value) Then 
     c.EntireRow.Hidden = False 
    End If 

Next 

End Sub 

任何想法?

感謝

我增加了一個別人的代碼...這個工程確定提供了我從和值(如下)狀態。 但是,我無法引用我的文本框中的值。當我嘗試使用下面的行並參考UserForm1.TextBox1.ValueUserForm1.TextBox2.Value時,代碼會運行,但什麼都不做?

Sub Worksheet_Calculate() 

Dim LastRow As Long, c As Range 

LastRow = Cells(Cells.Rows.Count, "AH").End(xlUp).Row 

For Each c In Range("AH3:AH1000") 

    If (c.Value >= 0 And c.Value <= 1500) Then 
    '(c.Value > UserForm1.TextBox1.Value And c.Value < UserForm1.TextBox2.Value) Then 
     c.EntireRow.Hidden = False 

    Else: c.EntireRow.Hidden = True 

    End If 

Next 

End Sub 

回答

1

你會踢自己...更改

c.EntireRow.Hidden = False 

c.EntireRow.Hidden = True 
+0

我已經修改了我的代碼,但是,仍然有問題與userform.textbox.value參考 - 請看到編輯的問題。 – SMORF 2014-12-02 16:06:51

+0

當你發現一個你期望它能夠工作的值並且看到返回的值是?時,你可以逐句通過代碼並暫停它嗎?一種可能的原因是Excel有數字時可能會採用文本格式。你可以嘗試:如果(c.Value * 1> = 0和c.Value * 1 <= 1500)然後 – Dave 2014-12-02 16:23:03

+0

嗨。這是我不明白...當我逐句通過代碼時,c的值等於單元格值,UserForm1.TextBox1.Value等於textbox1值,UserForm1.TextBox2.Value等於textbox2值。然而,文本框的值顯示在引號中...我使用數字值的文本框 - 我是否需要將文本框的值更改爲數字? – SMORF 2014-12-02 17:34:23