Em tạo một Form, trong form có tạo một MultiPage (gồm 2 trang). Cho em hỏi làm thế nào để mỗi khi Click vào mỗi MultiPage thì dòng Textbox trên Form sẽ thay đổi theo nội dung của mình. Và cho em hỏi thêm, tên của MultiPage viết tiếng việt được không.
Dear ptm0412
Theo hướng dẫn của anh em đã làm được cái useform theo ý muốn.
Em tạo một textbox mới để nhập đoạn mã hiệu vào thì nó sẽ tự tìm mã hiệu trong lisbox (dang từ điển)
Đây là code của TextBox1_Change :
PHP:
Private Sub TextBox1_Change()
Dim Cls_tim As String
Dim Shtim_Name As String
Dim Rng_Tim As Range, Rng_Kq As Range
Shtim_Name = TabStrip1.SelectedItem.Caption
Set Rng_Tim = Sheets(Shtim_Name).Range("A4:C" & Range("A65536").End(xlDown).Row)
Cls_tim = TextBox1.Value
TextBox1 = UCase(TextBox1)
If Cls_tim = "" Then Exit Sub
Set Rng_Kq = Rng_Tim.Find(Cls_tim, , xlFormula, xlPart)
If Rng_Kq Is Nothing Then Exit Sub
ListBox1.RowSource = Shtim_Name & "!" & Rng_Kq.Address
End Sub
Khi chạy thì báo lỗi dòng: "Set Rng_Kq = Rng_Tim.Find(Cls_tim, , xlFormula, xlPart)"
Nhờ anh và AC trên GPE xem giúp.
Trân trọng.
Mong nhận được hồi đáp của AC
Dear ptm0412
Theo hướng dẫn của anh em đã làm được cái useform theo ý muốn.
Em tạo một textbox mới để nhập đoạn mã hiệu vào thì nó sẽ tự tìm mã hiệu trong lisbox (dang từ điển)
Đây là code của TextBox1_Change :
PHP:
Private Sub TextBox1_Change()
Dim Cls_tim As String
Dim Shtim_Name As String
Dim Rng_Tim As Range, Rng_Kq As Range
Shtim_Name = TabStrip1.SelectedItem.Caption
Set Rng_Tim = Sheets(Shtim_Name).Range("A4:C" & Range("A65536").End(xlDown).Row)
Cls_tim = TextBox1.Value
TextBox1 = UCase(TextBox1)
If Cls_tim = "" Then Exit Sub
Set Rng_Kq = Rng_Tim.Find(Cls_tim, , xlFormula, xlPart)
If Rng_Kq Is Nothing Then Exit Sub
ListBox1.RowSource = Shtim_Name & "!" & Rng_Kq.Address
End Sub
Khi chạy thì báo lỗi dòng: "Set Rng_Kq = Rng_Tim.Find(Cls_tim, , xlFormula, xlPart)"
Nhờ anh và AC trên GPE xem giúp.
Trân trọng.
Mong nhận được hồi đáp của AC
À, đúng là không phải vậy, do mình hiểu nhầm câu hỏi chớ lý nào hỏi dễ vậy.
Mình cứ nghĩ ndu hỏi là làm sao mặc định một Page khi form hiện lên. Còn cái vụ "nhớ" kia thì mình đã biết rồi. Sorry!
Cả ơn anh NDU góp ý:
Để bổ sung thêm nhiều giá trị hiển thị vào listbox em viết :
PHP:
Private Sub TextBox1_Change()
Dim Cls_tim As String
Dim Shtim_Name As String
Dim Rng_Tim As Range, Rng_Kq As Range
Shtim_Name = TabStrip1.SelectedItem.Caption
Set Rng_Tim = Sheets(Shtim_Name).Range("A4:C" & Range("A65536").End(xlDown).Row)
Cls_tim = TextBox1.Value
TextBox1 = UCase(TextBox1)
If Cls_tim = "" Then Exit Sub
Set Rng_Kq = Rng_Tim.Find(Cls_tim, , xlFormulas, xlPart)
If Rng_Kq Is Nothing Then Exit Sub
Dim Fist_Row as long, last_row as long
First_Row = Rng_Kq.Row
Last_row = Range("A65536").End(xlDown).Row
ListBox1.RowSource = "'[GPE.xls]" & Shtim_Name & " '!A" & First_row & ":C" & Last_row
End Sub
Em chạy bị báo lỗi. Em chưa hiểu nhiều về VB nên không biết phải sửa thế nào?
Xin hỏi anh Vba_GPe và mọi người.
Trong ví dụ của anh, biến Name_Tab sẽ lấy Caption của các tab trong TabStrip1:
PHP:
Dim Name_Tab As String
Name_Tab = TabStrip1.SelectedItem.Caption (Các Caption sẽ có dang: DG1776,DG1777)
'+ Em đặt thêm 1 biến nưa
Dim Name_Sh as String
Name_Sh = "DM"&Right(Name_Tab,4) (Ý: Ứng với mỗi Name_Tab là (DG1776,DG1777) thi Name_Sh sẽ là (DM1776,DM1777)
Em viết code như trên, nhưng khi F8 để chay thử thì tại dòng "Name_Sh = "DM"&Right(Name_Tab,4) " nó báo Name_Tab = "" và biến Name_Sh chỉ có giá trị là "DM" thôi.
Em chưa tìm ra vấn đề, kinh nhờ anh chị và mọi người giải đáp.
Cảm ơn anh chị.