Hỏi : Cách ẩn đi Textbox (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

cokhimocaybt

Thành viên mới
Tham gia
8/11/06
Bài viết
26
Được thích
2
Trong Form tôi có 24 cái Textbox1-> Textbox24 và 1 textbox25 . Khi tôi gõ 1 số vào Textbox25 (trong khoảng từ 1 đến 24) từ chỉ hiện ra các Textbox từ 1 đến số mà ta gõ trong khung Textbox25 còn các text box khác thì ẩn đi
Cám ơn trước
 
Bạn dùng thủ tục này cho Textbox25 nhé.
Mã:
[COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Sub[/COLOR] TextBox25_Change()
[COLOR=darkblue]Dim[/COLOR] i [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Integer[/COLOR]
[COLOR=darkblue]Dim[/COLOR] txt [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]String[/COLOR]
[COLOR=darkblue]If[/COLOR] TextBox25.Value >= 1 [COLOR=darkblue]Then[/COLOR]
    [COLOR=darkblue]For[/COLOR] i = 1 [COLOR=darkblue]To[/COLOR] TextBox25.Value
        txt = "TextBox" & i
        UserForm1.Controls(txt).Visible = [COLOR=darkblue]True[/COLOR]
    [COLOR=darkblue]Next[/COLOR]
    [COLOR=darkblue]For[/COLOR] i = TextBox25.Value + 1 [COLOR=darkblue]To[/COLOR] 24
        txt = "TextBox" & i
        UserForm1.Controls(txt).Visible = [COLOR=darkblue]False[/COLOR]
    [COLOR=darkblue]Next[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
End [COLOR=darkblue]Sub[/COLOR]
thân.


Bạn chú ý post bài đúng chủ đề
 
Thêm 1 đoạn code nữa cho bạn tham khảo:
Mã:
Private Sub TextBox25_Change()
On Error GoTo thoat
    Dim objTextbox As Control
    For Each objTextbox In UserForm1.Controls
        If UCase(TypeName(objTextbox)) = "TEXTBOX" Then
            If UCase(objTextbox.Name) <> "TEXTBOX25" Then objTextbox.Visible = False
            If UCase(objTextbox.Name) = "TEXTBOX" & TextBox25.Text Then objTextbox.Visible = True
        End If
    Next objTextbox
thoat:
End Sub
 
Hình như chưa đáp ứng đề bài :
theo mình thấy đoạn này chỉ hiện cái textboxX thôi, còn yêu cầu là từ 1 ->x thì visible, x+1 ---> 24 thì hide.
 
Lần chỉnh sửa cuối:
To Soibien: Code của bác rất hay. Xin phép được chỉnh lại 1 chút như dưới đây.
Mã:
[LEFT][COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Sub[/COLOR] TextBox25_Change()
[COLOR=darkblue]Dim[/COLOR] i [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Integer[/COLOR]
[COLOR=darkblue]Dim[/COLOR] txt [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]String[/COLOR]
[COLOR=darkblue]If [/COLOR][COLOR=black]TextBox25.Value > 24 Then MsgBox "Chi nhan gia tri tu 1 den 24."[/COLOR]
[COLOR=darkblue]If[/COLOR] TextBox25.Value >= 1 [COLOR=darkblue]Then[/COLOR]
 [COLOR=darkblue]For[/COLOR] i = TextBox25.Value + 1 [COLOR=darkblue]To[/COLOR] 24
     txt = "TextBox" & i
     UserForm1.Controls(txt).Visible = [COLOR=darkblue]False[/COLOR]
 [COLOR=darkblue]Next[/COLOR]
 [COLOR=darkblue]For[/COLOR] i = 1 [COLOR=darkblue]To[/COLOR] TextBox25.Value
     txt = "TextBox" & i
     UserForm1.Controls(txt).Visible = [COLOR=darkblue]True[/COLOR]
 [COLOR=darkblue]Next[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
TextBox25.Visible = [COLOR=#00008b]True[/COLOR]
End [COLOR=darkblue]Sub[/COLOR][/LEFT]
 
Cám ơn bạn SoiBien nha!
Mã:
Private Sub TextBox25_Change()
On Error Resume Next
    Dim objTextbox As Control
    For Each objTextbox In UserForm1.Controls
        If UCase(TypeName(objTextbox)) = "TEXTBOX" Then
            If UCase(objTextbox.Name) <> "TEXTBOX25" Then objTextbox.Visible = False
            If UCase(objTextbox.Name) = "TEXTBOX" & TextBox25.Text Or _
                Val(Mid(objTextbox.Name, 8, Len(objTextbox.Name) - 7)) <= Val(TextBox25.Text) Then objTextbox.Visible = True
        End If
    Next objTextbox
End Sub
 
cái này chỉ ẩn được 1 textbox_ thồi nếu có 3 hoặc 4 thì sau nhỉ!
 
Web KT

Bài viết mới nhất

Back
Top Bottom