Nhờ mọi người kiểm tra code xem sai ở đâu mà Form không Load được. (1 người xem)

Liên hệ QC

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

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ế
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!
 

File đính kèm

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!
Lỗi thứ nhất: Trong Sub UserForm_Initialize có câu này:
PHP:
ListBox1.RowSource = "Sheet5!A10:K" & Sheet5.[A65536].End(xlUp).Row
Cái này là không được vì Sheet5 là CodeName chứ không phải SheetName, SheetName là "danh sach". Bạn sửa lại như vầy là được:
PHP:
ListBox1.RowSource = Sheet5.Range("A10:K" & Sheet5.[A65536].End(xlUp).Row).Address

Lỗi thứ hai: Trong Sub Private Sub UserForm_Terminate có câu này:
PHP:
Source.Range("A:K").Clear
Thiệt tình là tôi cũng chẳng hiểu Source là cái gì nữa, vì nếu xem như đây là một thuộc tính của đối tượng Application thì không đúng vì đối tượng Application không có thuộc tính này; nếu xem đây là một biến kiểu WorkSheet cũng không phải vì không hề có khai báo gì về biến này; nếu xem đây là CodeName của một sheet nào đó thì cũng không đúng vì chẳng có sheet nào có CodeName như vậy. Tóm lại là bạn cần kiểm tra lại câu lệnh này và sửa cho phù hợp.
 
Upvote 0
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!

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õ
 
Upvote 0
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õ
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?
 
Upvote 0
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?
Bạn thử với code này thử xem sao nhé
Code Form:
PHP:
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
Code trong module
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
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử với code này thử xem sao nhé
Code Form:
PHP:
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
Code trong module
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
mình copy code trên về được rồi, nhưng lại bị báo lổi ở chổ
Mã:
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
 
Lần chỉnh sửa cuối:
Upvote 0
Phương thức tìm kiếm

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!

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.
 

File đính kèm

Upvote 0
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ả.
 
Upvote 0
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ả.

Click phải vào form Nhập Liệu (tại treeview) chọn vào Remove Nhập Liệu ... Sau đó một thông báo sẽ hiển thị, nếu bạn chọn No thì nó sẽ xóa form, nếu chọn Yes thì nó vẫn sẽ xóa form, đồng thời sẽ backup cái form này tại một thư mục mà bạn chọn lựa, sau này có dùng đến thì Import nó vào lại.
 
Upvote 0
Giúp đỡ tạo Form

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.
 
Upvote 0
Đã 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 ...
 
Upvote 0
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.
 
Upvote 0
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.

Tôi trân trọng sự nhiệt tình giúp đỡ của Anh, tuy nhiên, nếu mình "cố giúp cho trót" cái mà người ta không cần và thậm chí muốn xóa nó, thì có đáng không nhỉ?
 
Upvote 0
Nó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?
 
Upvote 0
Nó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?
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ích
Đằng nào thì anh cũng muốn GIÚP tới cùng mà
Ẹc... Ẹc...
 
Upvote 0
Anh muốn tác giả cần và nêu ý kiến thì mới làm, nếu chưa có ý kiến thì anh dành thời gian cho việc khác để khỏi tốn thời gian vô nghĩa.
 
Lần chỉnh sửa cuối:
Upvote 0
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.
 

File đính kèm

Upvote 0
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.

Vấn đề tạo Form nhập liệu mà chưa có ai giúp em vì tất cả mọi người ai cũng phải làm 1 việc gì đó nên ít ai rảnh để tạo Form và viết code giùm cho em vì mất rất nhiều thời gian.
Anh là công chức nên ít nhiều cũng rảnh hơn các anh em khác, muốn tạo Form thì em cần nêu rõ thêm cần tổng hợp báo cáo với nội dung gì, cần trích lọc những gì thì cần nêu cụ thể luôn để anh làm 1 lần cho tiện, gửi nội dung qua địa chỉ Mail của anh (cũng có tên cơ quan anh trong đó):
betnmtdongnai09@gmail.com

Để khi xong thì anh mail qua em cho tiện, vì khi viết xong File có thể lên lên đến 5 MB sợ nặng quá không đủ dung lượng Upload file lên diễn đàn.
 
Lần chỉnh sửa cuối:
Upvote 0
dạ Được thế thì còn gì bằng. Hy vọng nó se không làm mất thời gian của anh. Em sẽ gửi địa chỉ qua email cho anh
 
Upvote 0
Web KT

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

Back
Top Bottom