tuanvu0407
Thành viên mới
- Tham gia
- 30/3/21
- Bài viết
- 11
- Được thích
- 2
File đính kèm
Lần chỉnh sửa cuối:
Bác sửa fix giúp e vsThiếu hàm hoặc Sub Locin trong modul.
anh down về rồi giải nén mở excel lên rồi ALT+F11 -> import file có đuôi frm vào mới thấy code của em trong from anhRất đáng tiếc, không hiểu tại sao Máy mình không mở được file.rar của bạn. (kể cả các file.rar của Anh PTM,...nữa)
Private Sub LENHIN_Click()Máy của mình không giải nén file .RAR của bạn được.
Xin lỗi BQT, tôi không đọc tin của Anh SA-DQ trước khi đăng bài trả lời.
em post đoạn code bác xem nó bị chỗ nào nhaPrivate Sub LENHIN_Click()
On Error GoTo tn
'tao mang chay
Application.ScreenUpdating = False
Dim arr1() As Variant
Dim chuoi1, chuoi2, chuoi3 As String
chuoi1 = TTIN.Text
chuoi2 = Left(chuoi1, InStr(1, chuoi1, "!") - 1)
chuoi3 = Right(chuoi1, Len(chuoi1) - InStr(1, chuoi1, "!"))
Sheets(chuoi2).Select
Range(chuoi3).Select
arr1 = WorksheetFunction.Transpose(Selection.Resize(Selection.Rows.Count, 1))
'tao mang dieu kien
Dim arr2() As Variant
Dim chuoi4, chuoi5, chuoi6 As String
chuoi4 = LISTIN.Text
chuoi5 = Left(chuoi4, InStr(1, chuoi4, "!") - 1)
chuoi6 = Right(chuoi4, Len(chuoi4) - InStr(1, chuoi4, "!"))
Sheets(chuoi5).Select
Range(chuoi6).Select
arr2 = WorksheetFunction.Transpose(Selection.Resize(Selection.Rows.Count, 1))
'tham chieu target
Dim chuoitarget, chuoitaget1, chuoitaget2 As String
chuoitarget = TARGET.Text
chuoitarget1 = Left(chuoitarget, InStr(1, chuoitarget, "!") - 1)
chuoitarget2 = Right(chuoitarget, Len(chuoitarget) - InStr(1, chuoitarget, "!"))
'gan mang resize
Dim a, b As Integer
Dim tex1, tex2 As String
Dim res1(), res2() As String
text1 = RS.Text
a = Len(text1) - Len(Replace(text1, ")", "", 1, , vbTextCompare))
ReDim res1(1 To a)
ReDim res2(1 To a)
text2 = text1
For b = 1 To a
res1(b) = Mid(text2, 2, InStr(1, text2, "!", vbTextCompare) - 2)
res2(b) = Mid(text2, InStr(1, text2, "!", vbTextCompare) + 1, _
InStr(1, text2, ")", vbTextCompare) - InStr(1, text2, "!", vbTextCompare) - 1)
text2 = Right(text2, Len(text2) - InStr(1, text2, ")", vbTextCompare))
Next b
'gan mang dieu kien
Dim i, j As Integer
Dim str, str1, str2, str3 As String
Dim mang(), mangsheet() As String
str = DIEUKIENIN.Text
i = Len(str) - Len(Replace(str, ")", "", 1, , vbTextCompare))
ReDim mang(1 To i)
str1 = str
For j = 1 To i
mang(j) = Mid(str1, 2, InStr(1, str1, "/", vbTextCompare) - 2)
str1 = Right(str1, Len(str1) - InStr(1, str1, ")", vbTextCompare))
Next j
'gan mang sheetsdieukien
ReDim mangsheet(1 To i) As String
str2 = str
For j = 1 To i
mangsheet(j) = Mid(str2, 1, InStr(1, str2, ")", vbTextCompare))
str2 = Right(str2, Len(str2) - InStr(1, str2, ")", vbTextCompare))
Next j
'thao tac loc bang theo doi
If LOC.Value = True Then
Dim locplacesheet, locplaceadd As String
Dim dklocsheet, dklocadd As String
Dim text6, text7 As String
text6 = VTLOC.Text
text7 = DKLOC.Text
locplacesheet = Mid(text6, 2, InStr(1, text6, "!", vbTextCompare) - 2)
locplaceadd = Mid(text6, InStr(1, text6, "!", vbTextCompare) + 1, _
InStr(1, text6, ")", vbTextCompare) - InStr(1, text6, "!", vbTextCompare) - 1)
dklocsheet = Mid(text7, 2, InStr(1, text7, "!", vbTextCompare) - 2)
dklocadd = Mid(text7, InStr(1, text7, "!", vbTextCompare) + 1, _
InStr(1, text7, ")", vbTextCompare) - InStr(1, text7, "!", vbTextCompare) - 1)
'filter
Call LOCIN(locplacesheet, locplaceadd, dklocsheet, dklocadd)
End If
'in thoi nao
Dim k, d, M, t, p, y, y1 As Long
Dim ws As Worksheet
k = ST.Value
d = FI.Value
For M = k To d
Sheets(chuoitarget1).Range(chuoitarget2).Value = M
'thao tac khoi chen anh.....
Dim picplacesheet, picplaceadd As String
Dim picaddsheet, picaddadd As String
Dim text3, text4, text5 As String
Dim ra, ca As Double
text3 = PIC.Text
text4 = DCA.Text
text5 = PGA.Text
picplacesheet = Mid(text3, 2, InStr(1, text3, "!", vbTextCompare) - 2)
picplaceadd = Mid(text3, InStr(1, text3, "!", vbTextCompare) + 1, _
InStr(1, text3, ")", vbTextCompare) - InStr(1, text3, "!", vbTextCompare) - 1)
picaddsheet = Mid(text4, 2, InStr(1, text4, "!", vbTextCompare) - 2)
picaddadd = Mid(text4, InStr(1, text4, "!", vbTextCompare) + 1, _
InStr(1, text4, ")", vbTextCompare) - InStr(1, text4, "!", vbTextCompare) - 1)
ra = Left(text5, InStr(1, text5, "x", vbTextCompare) - 1)
ca = Right(text5, Len(text5) - InStr(1, text5, "x", vbTextCompare))
If sohoa.Value = True And Sheets(picaddsheet).Range(picaddadd) <> "" Then
Call chensohoa(picplacesheet, picplaceadd, picaddsheet, picaddadd, ra, ca)
End If
For y1 = 1 To UBound(arr1)
If arr1(y1) = M Then
y = y1
End If
Next y1
For t = 1 To UBound(res1)
Sheets(res1(t)).Select
Range(res2(t)).Select
giandong
Next t
For p = 1 To UBound(mang) ' tham chieu dk in voi dk in nhap vao
If arr2(y) = mang(p) Then 'tim dieu kien in nhap vao
For Each ws In Worksheets ' tim ws trong dieu kien in
If InStr(1, mangsheet(p), ws.Name, vbTextCompare) > 0 Then
If xemtruoc.Value = False Then
Unload Me
ws.PrintOut preview:=xemtruoc.Value
Else
Unload Me
ws.PrintPreview
If msgbox("Ban muon in chu?", vbOKCancel) = vbOK Then
ws.PrintOut preview:=False
Else
Exit Sub
End If
End If
End If
Next
End If
Next p
Next M
Application.ScreenUpdating = True
Exit Sub
tn:
msgbox "Ban nhap chua dung du lieu"
End Sub
Thua! Không Import cái frm của bạn được. Lỗi: "Line 8: Property OleObjectBlob in innhieusheets had an invalid file reference."Private Sub LENHIN_Click()
On Error GoTo tn
'tao mang chay
Application.ScreenUpdating = False
Dim arr1() As Variant
Dim chuoi1, chuoi2, chuoi3 As String
chuoi1 = TTIN.Text
chuoi2 = Left(chuoi1, InStr(1, chuoi1, "!") - 1)
chuoi3 = Right(chuoi1, Len(chuoi1) - InStr(1, chuoi1, "!"))
Sheets(chuoi2).Select
Range(chuoi3).Select
arr1 = WorksheetFunction.Transpose(Selection.Resize(Selection.Rows.Count, 1))
'tao mang dieu kien
Dim arr2() As Variant
Dim chuoi4, chuoi5, chuoi6 As String
chuoi4 = LISTIN.Text
chuoi5 = Left(chuoi4, InStr(1, chuoi4, "!") - 1)
chuoi6 = Right(chuoi4, Len(chuoi4) - InStr(1, chuoi4, "!"))
Sheets(chuoi5).Select
Range(chuoi6).Select
arr2 = WorksheetFunction.Transpose(Selection.Resize(Selection.Rows.Count, 1))
'tham chieu target
Dim chuoitarget, chuoitaget1, chuoitaget2 As String
chuoitarget = TARGET.Text
chuoitarget1 = Left(chuoitarget, InStr(1, chuoitarget, "!") - 1)
chuoitarget2 = Right(chuoitarget, Len(chuoitarget) - InStr(1, chuoitarget, "!"))
'gan mang resize
Dim a, b As Integer
Dim tex1, tex2 As String
Dim res1(), res2() As String
text1 = RS.Text
a = Len(text1) - Len(Replace(text1, ")", "", 1, , vbTextCompare))
ReDim res1(1 To a)
ReDim res2(1 To a)
text2 = text1
For b = 1 To a
res1(b) = Mid(text2, 2, InStr(1, text2, "!", vbTextCompare) - 2)
res2(b) = Mid(text2, InStr(1, text2, "!", vbTextCompare) + 1, _
InStr(1, text2, ")", vbTextCompare) - InStr(1, text2, "!", vbTextCompare) - 1)
text2 = Right(text2, Len(text2) - InStr(1, text2, ")", vbTextCompare))
Next b
'gan mang dieu kien
Dim i, j As Integer
Dim str, str1, str2, str3 As String
Dim mang(), mangsheet() As String
str = DIEUKIENIN.Text
i = Len(str) - Len(Replace(str, ")", "", 1, , vbTextCompare))
ReDim mang(1 To i)
str1 = str
For j = 1 To i
mang(j) = Mid(str1, 2, InStr(1, str1, "/", vbTextCompare) - 2)
str1 = Right(str1, Len(str1) - InStr(1, str1, ")", vbTextCompare))
Next j
'gan mang sheetsdieukien
ReDim mangsheet(1 To i) As String
str2 = str
For j = 1 To i
mangsheet(j) = Mid(str2, 1, InStr(1, str2, ")", vbTextCompare))
str2 = Right(str2, Len(str2) - InStr(1, str2, ")", vbTextCompare))
Next j
'thao tac loc bang theo doi
If LOC.Value = True Then
Dim locplacesheet, locplaceadd As String
Dim dklocsheet, dklocadd As String
Dim text6, text7 As String
text6 = VTLOC.Text
text7 = DKLOC.Text
locplacesheet = Mid(text6, 2, InStr(1, text6, "!", vbTextCompare) - 2)
locplaceadd = Mid(text6, InStr(1, text6, "!", vbTextCompare) + 1, _
InStr(1, text6, ")", vbTextCompare) - InStr(1, text6, "!", vbTextCompare) - 1)
dklocsheet = Mid(text7, 2, InStr(1, text7, "!", vbTextCompare) - 2)
dklocadd = Mid(text7, InStr(1, text7, "!", vbTextCompare) + 1, _
InStr(1, text7, ")", vbTextCompare) - InStr(1, text7, "!", vbTextCompare) - 1)
'filter
Call LOCIN(locplacesheet, locplaceadd, dklocsheet, dklocadd)
End If
'in thoi nao
Dim k, d, M, t, p, y, y1 As Long
Dim ws As Worksheet
k = ST.Value
d = FI.Value
For M = k To d
Sheets(chuoitarget1).Range(chuoitarget2).Value = M
'thao tac khoi chen anh.....
Dim picplacesheet, picplaceadd As String
Dim picaddsheet, picaddadd As String
Dim text3, text4, text5 As String
Dim ra, ca As Double
text3 = PIC.Text
text4 = DCA.Text
text5 = PGA.Text
picplacesheet = Mid(text3, 2, InStr(1, text3, "!", vbTextCompare) - 2)
picplaceadd = Mid(text3, InStr(1, text3, "!", vbTextCompare) + 1, _
InStr(1, text3, ")", vbTextCompare) - InStr(1, text3, "!", vbTextCompare) - 1)
picaddsheet = Mid(text4, 2, InStr(1, text4, "!", vbTextCompare) - 2)
picaddadd = Mid(text4, InStr(1, text4, "!", vbTextCompare) + 1, _
InStr(1, text4, ")", vbTextCompare) - InStr(1, text4, "!", vbTextCompare) - 1)
ra = Left(text5, InStr(1, text5, "x", vbTextCompare) - 1)
ca = Right(text5, Len(text5) - InStr(1, text5, "x", vbTextCompare))
If sohoa.Value = True And Sheets(picaddsheet).Range(picaddadd) <> "" Then
Call chensohoa(picplacesheet, picplaceadd, picaddsheet, picaddadd, ra, ca)
End If
For y1 = 1 To UBound(arr1)
If arr1(y1) = M Then
y = y1
End If
Next y1
For t = 1 To UBound(res1)
Sheets(res1(t)).Select
Range(res2(t)).Select
giandong
Next t
For p = 1 To UBound(mang) ' tham chieu dk in voi dk in nhap vao
If arr2(y) = mang(p) Then 'tim dieu kien in nhap vao
For Each ws In Worksheets ' tim ws trong dieu kien in
If InStr(1, mangsheet(p), ws.Name, vbTextCompare) > 0 Then
If xemtruoc.Value = False Then
Unload Me
ws.PrintOut preview:=xemtruoc.Value
Else
Unload Me
ws.PrintPreview
If msgbox("Ban muon in chu?", vbOKCancel) = vbOK Then
ws.PrintOut preview:=False
Else
Exit Sub
End If
End If
End If
Next
End If
Next p
Next M
Application.ScreenUpdating = True
Exit Sub
tn:
msgbox "Ban nhap chua dung du lieu"
End Sub
Bài đã được tự động gộp:
em post đoạn code bác xem nó bị chỗ nào nha
Theo tôi thì bạn gọi LOCIN ở dòng Call LOCIN(locplacesheet, locplaceadd, dklocsheet, dklocadd) thì bạn phải có Sub hoặc hàm LOCIN cho nó tìm đến để thực thi chứ. Hình như là ở đoạn sau cũng có call một sub hay hàm nữa thì phải Call chensohoa(picplacesheet, picplaceadd, picaddsheet, picaddadd, ra, ca).Private Sub LENHIN_Click()
On Error GoTo tn
'tao mang chay
Application.ScreenUpdating = False
Dim arr1() As Variant
Dim chuoi1, chuoi2, chuoi3 As String
chuoi1 = TTIN.Text
chuoi2 = Left(chuoi1, InStr(1, chuoi1, "!") - 1)
chuoi3 = Right(chuoi1, Len(chuoi1) - InStr(1, chuoi1, "!"))
Sheets(chuoi2).Select
Range(chuoi3).Select
arr1 = WorksheetFunction.Transpose(Selection.Resize(Selection.Rows.Count, 1))
'tao mang dieu kien
Dim arr2() As Variant
Dim chuoi4, chuoi5, chuoi6 As String
chuoi4 = LISTIN.Text
chuoi5 = Left(chuoi4, InStr(1, chuoi4, "!") - 1)
chuoi6 = Right(chuoi4, Len(chuoi4) - InStr(1, chuoi4, "!"))
Sheets(chuoi5).Select
Range(chuoi6).Select
arr2 = WorksheetFunction.Transpose(Selection.Resize(Selection.Rows.Count, 1))
'tham chieu target
Dim chuoitarget, chuoitaget1, chuoitaget2 As String
chuoitarget = TARGET.Text
chuoitarget1 = Left(chuoitarget, InStr(1, chuoitarget, "!") - 1)
chuoitarget2 = Right(chuoitarget, Len(chuoitarget) - InStr(1, chuoitarget, "!"))
'gan mang resize
Dim a, b As Integer
Dim tex1, tex2 As String
Dim res1(), res2() As String
text1 = RS.Text
a = Len(text1) - Len(Replace(text1, ")", "", 1, , vbTextCompare))
ReDim res1(1 To a)
ReDim res2(1 To a)
text2 = text1
For b = 1 To a
res1(b) = Mid(text2, 2, InStr(1, text2, "!", vbTextCompare) - 2)
res2(b) = Mid(text2, InStr(1, text2, "!", vbTextCompare) + 1, _
InStr(1, text2, ")", vbTextCompare) - InStr(1, text2, "!", vbTextCompare) - 1)
text2 = Right(text2, Len(text2) - InStr(1, text2, ")", vbTextCompare))
Next b
'gan mang dieu kien
Dim i, j As Integer
Dim str, str1, str2, str3 As String
Dim mang(), mangsheet() As String
str = DIEUKIENIN.Text
i = Len(str) - Len(Replace(str, ")", "", 1, , vbTextCompare))
ReDim mang(1 To i)
str1 = str
For j = 1 To i
mang(j) = Mid(str1, 2, InStr(1, str1, "/", vbTextCompare) - 2)
str1 = Right(str1, Len(str1) - InStr(1, str1, ")", vbTextCompare))
Next j
'gan mang sheetsdieukien
ReDim mangsheet(1 To i) As String
str2 = str
For j = 1 To i
mangsheet(j) = Mid(str2, 1, InStr(1, str2, ")", vbTextCompare))
str2 = Right(str2, Len(str2) - InStr(1, str2, ")", vbTextCompare))
Next j
'thao tac loc bang theo doi
If LOC.Value = True Then
Dim locplacesheet, locplaceadd As String
Dim dklocsheet, dklocadd As String
Dim text6, text7 As String
text6 = VTLOC.Text
text7 = DKLOC.Text
locplacesheet = Mid(text6, 2, InStr(1, text6, "!", vbTextCompare) - 2)
locplaceadd = Mid(text6, InStr(1, text6, "!", vbTextCompare) + 1, _
InStr(1, text6, ")", vbTextCompare) - InStr(1, text6, "!", vbTextCompare) - 1)
dklocsheet = Mid(text7, 2, InStr(1, text7, "!", vbTextCompare) - 2)
dklocadd = Mid(text7, InStr(1, text7, "!", vbTextCompare) + 1, _
InStr(1, text7, ")", vbTextCompare) - InStr(1, text7, "!", vbTextCompare) - 1)
'filter
Call LOCIN(locplacesheet, locplaceadd, dklocsheet, dklocadd)
End If
'in thoi nao
Dim k, d, M, t, p, y, y1 As Long
Dim ws As Worksheet
k = ST.Value
d = FI.Value
For M = k To d
Sheets(chuoitarget1).Range(chuoitarget2).Value = M
'thao tac khoi chen anh.....
Dim picplacesheet, picplaceadd As String
Dim picaddsheet, picaddadd As String
Dim text3, text4, text5 As String
Dim ra, ca As Double
text3 = PIC.Text
text4 = DCA.Text
text5 = PGA.Text
picplacesheet = Mid(text3, 2, InStr(1, text3, "!", vbTextCompare) - 2)
picplaceadd = Mid(text3, InStr(1, text3, "!", vbTextCompare) + 1, _
InStr(1, text3, ")", vbTextCompare) - InStr(1, text3, "!", vbTextCompare) - 1)
picaddsheet = Mid(text4, 2, InStr(1, text4, "!", vbTextCompare) - 2)
picaddadd = Mid(text4, InStr(1, text4, "!", vbTextCompare) + 1, _
InStr(1, text4, ")", vbTextCompare) - InStr(1, text4, "!", vbTextCompare) - 1)
ra = Left(text5, InStr(1, text5, "x", vbTextCompare) - 1)
ca = Right(text5, Len(text5) - InStr(1, text5, "x", vbTextCompare))
If sohoa.Value = True And Sheets(picaddsheet).Range(picaddadd) <> "" Then
Call chensohoa(picplacesheet, picplaceadd, picaddsheet, picaddadd, ra, ca)
End If
For y1 = 1 To UBound(arr1)
If arr1(y1) = M Then
y = y1
End If
Next y1
For t = 1 To UBound(res1)
Sheets(res1(t)).Select
Range(res2(t)).Select
giandong
Next t
For p = 1 To UBound(mang) ' tham chieu dk in voi dk in nhap vao
If arr2(y) = mang(p) Then 'tim dieu kien in nhap vao
For Each ws In Worksheets ' tim ws trong dieu kien in
If InStr(1, mangsheet(p), ws.Name, vbTextCompare) > 0 Then
If xemtruoc.Value = False Then
Unload Me
ws.PrintOut preview:=xemtruoc.Value
Else
Unload Me
ws.PrintPreview
If msgbox("Ban muon in chu?", vbOKCancel) = vbOK Then
ws.PrintOut preview:=False
Else
Exit Sub
End If
End If
End If
Next
End If
Next p
Next M
Application.ScreenUpdating = True
Exit Sub
tn:
msgbox "Ban nhap chua dung du lieu"
End Sub
Bài đã được tự động gộp:
em post đoạn code bác xem nó bị chỗ nào nha
Máy của bạn có bản WinRAR cũ nên không mở được những file RAR được nén bằng những bản WinRAR mới hơn. Bạn cập nhật WinRAR lên bản mới là mở đượcRất đáng tiếc, không hiểu tại sao Máy mình không mở được file.rar của bạn. (kể cả các file.rar của Anh PTM,...nữa)
Thua! Không Import cái frm của bạn được. Lỗi: "Line 8: Property OleObjectBlob in innhieusheets had an invalid file reference."
Theo tôi thì bạn gọi LOCIN ở dòng Call LOCIN(locplacesheet, locplaceadd, dklocsheet, dklocadd) thì bạn phải có Sub hoặc hàm LOCIN cho nó tìm đến để thực thi chứ. Hình như là ở đoạn sau cũng có call một sub hay hàm nữa thì phải Call chensohoa(picplacesheet, picplaceadd, picaddsheet, picaddadd, ra, ca).
Nếu code chạy đến lệnh gọi một chương trình, hoặc một chuong trình con (Public Sub...), hoặc một hàm UDF mà không tìm thấy thì chắc chắn là sẽ báo lỗi.
Bạn thử để On Error Resume Next hoặc On Error goto 0 ở đầu Sub và chạy code và Kiểm tra kết quả xem thấy thế nào?
Cần gì phải import Form vô, bạn HUONGHCKT đã nói ở trên là thiếu cái thủ tục (Sub) LOCIN(...) là đúng rồi đó. Bạn kiếm lại trong file gốc mà bạn copy Code, cái sub Locin và copy vào module file mới.Anh tải thử link này xem add frm vào được k
Chắc 3 sub locin, chensohoa và giandong nằm ở vd. Module1 nhưng thớt quên tải về hoặc quên đính kèm vào project.Còn thiếu cả 1 thủ tục (sub) giandong
Bài của mình không còn nữa (. . .); Bạn sửa lại nội dung bài của bạn dùm nha, ngõ hầu giữ đúng tính mạch lạc, tiện cho người cần theo dõi!. . . .
Xin lỗi BQT, tôi không đọc tin của Anh SA-DQ trước khi đăng bài trả lời.