quoc nhat
Thành viên tiêu biểu

- Tham gia
- 8/3/12
- Bài viết
- 567
- Được thích
- 43
- Nghề nghiệp
- cán bộ ngành y tế
Lỗi thứ nhất: Trong Sub UserForm_Initialize có câu này:Chào các anh chị trên Diển đàn.
Em lại có một cái Form tìm kiếm muốn nhờ mọi người giúp kiểm tra xem sai ở đâu mà Form không chạy được
Tên Form: UserForm 1 lấy dữ liệu ở sheet 5
Mọi người kiểm tra dùm em với nhé! Em cảm ơn!
ListBox1.RowSource = "Sheet5!A10:K" & Sheet5.[A65536].End(xlUp).Row
ListBox1.RowSource = Sheet5.Range("A10:K" & Sheet5.[A65536].End(xlUp).Row).Address
Source.Range("A:K").Clear
Chào các anh chị trên Diển đàn.
Em lại có một cái Form tìm kiếm muốn nhờ mọi người giúp kiểm tra xem sai ở đâu mà Form không chạy được
Tên Form: UserForm 1 lấy dữ liệu ở sheet 5
Mọi người kiểm tra dùm em với nhé! Em cảm ơn!
ListBox1.RowSource = Sheet5.Range("A10:K" & Sheet5.[A65536].End(xlUp).Row).Address
Vậy theo kiến thứ và trình độ của anh, anh có thể chịu khó sửa lại giúp em được không?sửa dòng ListBox1.RowSource=... trong Sub UserForm_Initialize()
thành như sau
PHP:ListBox1.RowSource = Sheet5.Range("A10:K" & Sheet5.[A65536].End(xlUp).Row).Address
là chạy được, các cái khác thì thấy loạn cào cào, nên tôi không rõ
Bạn thử với code này thử xem sao nhéVậy theo kiến thứ và trình độ của anh, anh có thể chịu khó sửa lại giúp em được không?
Private sArray
Private Sub UserForm_Initialize()
sArray = Sheet5.Range("A10:K" & Sheet5.[A65536].End(xlUp).Row).Value
ListBox1.List() = sArray
End Sub
'=================================================================
Private Sub TextBox1_Change()
Dim Clls As Range, Temp As Variant, i As Long, FCol As Long
Dim Arr, Arr1
On Error Resume Next
FCol = -(OptionButton1.Value * 5 + 2 * OptionButton2.Value + 8 * OptionButton3.Value)
If Len(Trim(TextBox1.Value)) = 0 Then ListBox1.List() = sArray: Exit Sub
Arr = Filter2DArray(sArray, FCol, "*" & TextBox1.Value & "*", False)
If Not IsArray(Arr) Then ListBox1.Clear: Exit Sub
ListBox1.List() = IIf(Trim(TextBox1.Text) = "", sArray, Arr)
End Sub
Function Filter2DArray(ByVal sArray, ByVal ColIndex As Long, ByVal FindStr As String, ByVal HasTitle As Boolean) Dim TmpArr, i As Long, j As Long, Arr, Dic, TmpStr, Tmp, Chk As Boolean, TmpVal As Double
On Error Resume Next
Set Dic = CreateObject("Scripting.Dictionary")
TmpArr = sArray
ColIndex = ColIndex + LBound(TmpArr, 2) - 1
Chk = (InStr("><=", Left(FindStr, 1)) > 0)
For i = LBound(TmpArr, 1) - HasTitle To UBound(TmpArr, 1)
If Chk And FindStr <> "" Then
TmpVal = CDbl(TmpArr(i, ColIndex))
If Evaluate(TmpVal & FindStr) Then Dic.Add i, ""
Else
If Left(FindStr, 1) = "!" Then
If Not (UCase(TmpArr(i, ColIndex)) Like UCase(Mid(FindStr, 2, Len(FindStr)))) Then Dic.Add i, ""
Else
If UCase(TmpArr(i, ColIndex)) Like UCase(FindStr) Then Dic.Add i, ""
End If
End If
Next
If Dic.Count > 0 Then
Tmp = Dic.keys
ReDim Arr(LBound(TmpArr, 1) To UBound(Tmp) + LBound(TmpArr, 1) - HasTitle, LBound(TmpArr, 2) To UBound(TmpArr, 2))
For i = LBound(TmpArr, 1) - HasTitle To UBound(Tmp) + LBound(TmpArr, 1) - HasTitle
For j = LBound(TmpArr, 2) To UBound(TmpArr, 2)
Arr(i, j) = TmpArr(Tmp(i - LBound(TmpArr, 1) + HasTitle), j)
Next
Next
If HasTitle Then
For j = LBound(TmpArr, 2) To UBound(TmpArr, 2)
Arr(LBound(TmpArr, 1), j) = TmpArr(LBound(TmpArr, 1), j)
Next
End If
End If
Filter2DArray = Arr
End Function
mình copy code trên về được rồi, nhưng lại bị báo lổi ở chổBạn thử với code này thử xem sao nhé
Code Form:
Code trong modulePHP:Private sArray Private Sub UserForm_Initialize() sArray = Sheet5.Range("A10:K" & Sheet5.[A65536].End(xlUp).Row).Value ListBox1.List() = sArray End Sub '================================================================= Private Sub TextBox1_Change() Dim Clls As Range, Temp As Variant, i As Long, FCol As Long Dim Arr, Arr1 On Error Resume Next FCol = -(OptionButton1.Value * 5 + 2 * OptionButton2.Value + 8 * OptionButton3.Value) If Len(Trim(TextBox1.Value)) = 0 Then ListBox1.List() = sArray: Exit Sub Arr = Filter2DArray(sArray, FCol, "*" & TextBox1.Value & "*", False) If Not IsArray(Arr) Then ListBox1.Clear: Exit Sub ListBox1.List() = IIf(Trim(TextBox1.Text) = "", sArray, Arr) End Sub
Mã:Function Filter2DArray(ByVal sArray, ByVal ColIndex As Long, ByVal FindStr As String, ByVal HasTitle As Boolean) Dim TmpArr, i As Long, j As Long, Arr, Dic, TmpStr, Tmp, Chk As Boolean, TmpVal As Double On Error Resume Next Set Dic = CreateObject("Scripting.Dictionary") TmpArr = sArray ColIndex = ColIndex + LBound(TmpArr, 2) - 1 Chk = (InStr("><=", Left(FindStr, 1)) > 0) For i = LBound(TmpArr, 1) - HasTitle To UBound(TmpArr, 1) If Chk And FindStr <> "" Then TmpVal = CDbl(TmpArr(i, ColIndex)) If Evaluate(TmpVal & FindStr) Then Dic.Add i, "" Else If Left(FindStr, 1) = "!" Then If Not (UCase(TmpArr(i, ColIndex)) Like UCase(Mid(FindStr, 2, Len(FindStr)))) Then Dic.Add i, "" Else If UCase(TmpArr(i, ColIndex)) Like UCase(FindStr) Then Dic.Add i, "" End If End If Next If Dic.Count > 0 Then Tmp = Dic.keys ReDim Arr(LBound(TmpArr, 1) To UBound(Tmp) + LBound(TmpArr, 1) - HasTitle, LBound(TmpArr, 2) To UBound(TmpArr, 2)) For i = LBound(TmpArr, 1) - HasTitle To UBound(Tmp) + LBound(TmpArr, 1) - HasTitle For j = LBound(TmpArr, 2) To UBound(TmpArr, 2) Arr(i, j) = TmpArr(Tmp(i - LBound(TmpArr, 1) + HasTitle), j) Next Next If HasTitle Then For j = LBound(TmpArr, 2) To UBound(TmpArr, 2) Arr(LBound(TmpArr, 1), j) = TmpArr(LBound(TmpArr, 1), j) Next End If End If Filter2DArray = Arr End Function
Function Filter2DArray(ByVal sArray, ByVal ColIndex As Long, ByVal FindStr As String, ByVal HasTitle As Boolean) [COLOR=#ff0000]Dim[/COLOR] TmpArr, i As Long, j As Long, Arr, Dic, TmpStr, Tmp, Chk As Boolean, TmpVal As Double
Bạn sử lại giúp mình với! Cảm ơn
Chào các anh chị trên Diển đàn.
Em lại có một cái Form tìm kiếm muốn nhờ mọi người giúp kiểm tra xem sai ở đâu mà Form không chạy được
Tên Form: UserForm 1 lấy dữ liệu ở sheet 5
Mọi người kiểm tra dùm em với nhé! Em cảm ơn!
Cảm ơn bạn đã giúp đỡ mình . Form Nhập liệu mình không dùng đến nhưng chưa biết xoá nó như thế nào cả.Tôi giúp bạn sửa Code trên Form tìm kiếm, còn Form dùng nhập liệu vào sheet danh sách bạn thiết kế lung tung sửa mất thời gian quá nên tôi không giúp được.
Cảm ơn bạn đã giúp đỡ mình . Form Nhập liệu mình không dùng đến nhưng chưa biết xoá nó như thế nào cả.
Cảm ơn bạn đã giúp đỡ mình . Form Nhập liệu mình không dùng đến nhưng chưa biết xoá nó như thế nào cả.
Đã giúp thì giúp cho trót.
Nếu em muốn tạo Form nhập liệu thì anh giúp làm luôn, có 2 loại em thích loại nào?
- Sheet Form: dùng các Cell của 1 cột trong 1 sheet khác khi gõ dữ liệu xong nhấn nút nó sẽ nhập dữ liệu vào sheet Danh sách.
- UserForm: tạo 1 nút khi nhấn vào thì nó hiện ra 1 Form khi gõ dữ liệu vào Form xong nhấn nút nó sẽ nhập dữ liệu vào sheet Danh sách.
Gì kỳ vậy ta? Người ta nói: "Form Nhập liệu mình không dùng đến nhưng chưa biết xoá nó như thế nào" thì mắc mớ gì mình lại giúp tạo form nữa chi vậy? ẹc ... ẹc ...
Em hãy đọc đoạn này:
"Đã giúp thì giúp cho trót. Nếu em muốn tạo Form nhập liệu thì anh giúp".
Nếu em muốn: nó có 2 điều kiện, thích thì làm, không thích là không làm.
Thấy bạn dùng từ ngữ tôi nghĩ tuổi đời bạn còn trẻ, còn tôi đã 56 tuổi rồi nên không muốn bon chen, tranh luận, ý tôi là muốn giúp người khác trong khả năng của mình.
Nếu anh đã nói vậy thì anh cứ.. GIÚP đi ---> Quan trọng gì cái chuyện người ta thích hay không thíchNói chung cái gì cũng cần, ông cha mình có câu nói "được voi đòi tiên", người cầu tiến biết 1 thì muốn biết 2, bạn ấy có thể hơi kém nên sử dụng cái gì khó khăn, phức tạp thì ngại vì vậy mới có câu "không muốn dùng Form". Còn tôi thì nghĩ khác đã giúp thì giúp đến cùng, tôi chỉ nêu ý kiến vậy thôi còn việc muốn hay không muốn là tuỳ bạn ấy, nếu bạn ấy muốn thì cũng phải tốn công tốn sức chứ có ích gì đâu?
Thấy mọi người tranh cải nhau nhiều có khi em muốn đổi ý là muốn mọi người giúp. Tại vì lúc trước em cũng có gửi bài lên diễn đàn nhờ mọi người viết giúp code cho Form nhập liệu mà chưa có ai giúp nên từ đó đến giờ em không dùng đến nó. Nhưng hôm nay thấy anh có ý giúp đỡ thì em cũng có ý muốn nhờ anh giúp luôn.
Thưa anh thực ra Form nhập liệu không phải để nhập liệu vào sheet 5 mà nhập liệu vào sheet 1 anh ạ!
Cái form thì em đã làm sẵn rồi còn code thì em thấy khó quá nên chưa viết được. Nếu anh có thời gian rảnh thì giúp em với.
Em sẽ viết chỉ dẫn lên Form rồi anh xem giúp em với nhé.
Nếu thấy khó hoặc mất thời gian của anh thì anh bỏ qua cũng được. Em không giám làm phiền anh nhiều.