Xin nhờ tạo UserForm in theo lựa chọn

Liên hệ QC
Anh cho em hỏi thêm vấn để này chút ạ!
Nếu em có thêm một "cặp Sheet" kiểu như ví dụ nêu trên nữa mà cũng muốn in kiểu vậy
Thì phải sửa code ở đoạn nào anh?:
Em tạo thêm một mudule giống module anh đã giúp em và chỉnh sửa Sub thành tên mới, và các tên sheet và các vị trí ô cũng thay đổi thao.
Em xem code chỉ thấy có tên sheet cần lấy dữ liệu, mà không thấy tên sheet cần điền dữ liệu sang.
Mã:
With Sheets("Ten")
Nên nếu em muốn thêm một "cặp" sheet là shee "D" và sheet "E"
Sheet cần lấy dữ liều là "D" và dữ liệu được lấy sang sheet"E"
Thì phải thêm một mudule mới, chép đoạn code anh giúp vào và chỉnh sửa code như thế nào vậy anh?
Những ô trong "E" tô nền vàng là những ô được lấy dữ liệu liên kết từ "D" sang khi Spin.
Code em đăng bài 1 khi in có sử dụng kết hợp với hàm Vlookup(), lấy dữ liệu từ vùng Vlookup().
Anh xem giúp em.
View attachment 227975
View attachment 227976
Mã:
Sub Rectangle1_E()
  Dim sArr(), eRow&, fRow&, sRow&, i&, strRes$
  With Sheets("D")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:K" & eRow).Value
  End With
  sRow = UBound(sArr)
  On Error Resume Next
  fRow = Range("B2").Value
  If fRow < 1 Then fRow = 1
  eRow = Range("C2").Value
  If eRow > sRow Then eRow = sRow
  For i = fRow To eRow
    Range("D5").Value = sArr(i, 1)
    Range("E6").Value = sArr(i, 4)
    Range("F6").Value = sArr(i, 5)
    Range("E7").Value = sArr(i, 6)
    Range("F7").Value = sArr(i, 7)
    Range("E8").Value = sArr(i, 8)
    Range("F8").Value = sArr(i, 9)
    Range("D2:F15").PrintPreview ' Xem truoc khi in
    'Range("D2:F15").PrintOut 'In
    strRes = strRes & "," & i
  Next i
  If Len(strRes) Then
    MsgBox ("Da in cac So thu tu: " & Mid(strRes, 2, Len(strRes)))
  Else
    MsgBox ("Du lieu So Thu Tu khong phu hop, Khong In")
  End If
End Sub

Sub Rectangle2_E()
  Dim sArr(), S, eRow&, N, sRow&, i&, ik&, strRes$
  With Sheets("D")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:k" & eRow).Value
  End With
  sRow = UBound(sArr)
  On Error Resume Next
  strRes = Range("B4").Value
  S = Split("," & strRes, ",")
  strRes = ""
  N = UBound(S)
  For i = 1 To N
    If IsNumeric(S(i)) Then
      ik = CLng(S(i))
      If ik > 0 And ik <= sRow Then
        Range("D5").Value = sArr(ik, 1)
        Range("E6").Value = sArr(ik, 4)
        Range("F6").Value = sArr(ik, 5)
        Range("E7").Value = sArr(ik, 6)
        Range("F7").Value = sArr(ik, 7)
        Range("E8").Value = sArr(ik, 8)
        Range("F8").Value = sArr(ik, 9)
        
        Range("D2:F15").PrintPreview ' Xem truoc khi in
        'Range("D2:F15").PrintOut 'In
        strRes = strRes & "," & ik
      End If
    End If
  Next i
  If Len(strRes) Then
    MsgBox ("Da in cac So thu tu: " & Mid(strRes, 2, Len(strRes)))
  Else
    MsgBox ("Du lieu So Thu Tu khong phu hop, Khong In")
  End If
End Sub
 

File đính kèm

  • NB_2.xlsb
    31.1 KB · Đọc: 7
File đã giúp em ở bài #15 có 03 module và 01 Form em đã copy cả vào rồi đó ạ:
Module11 ( trùng với module1 sẵn có nên đối thành Module11), module Muousemove, Fun_Filter2Array
Form_Printts.
Không hiểu sao ạ!
Cái này gọi là thừa chứ không thiếu rồi (Có 2 cái giống chỉ khác tên Module )
 

File đính kèm

  • thu lai.xlsm
    118.4 KB · Đọc: 5
Mã:
Sub Rectangle1_E()
  Dim sArr(), eRow&, fRow&, sRow&, i&, strRes$
  With Sheets("D")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:K" & eRow).Value
  End With
  sRow = UBound(sArr)
  On Error Resume Next
  fRow = Range("B2").Value
  If fRow < 1 Then fRow = 1
  eRow = Range("C2").Value
  If eRow > sRow Then eRow = sRow
  For i = fRow To eRow
    Range("D5").Value = sArr(i, 1)
    Range("E6").Value = sArr(i, 4)
    Range("F6").Value = sArr(i, 5)
    Range("E7").Value = sArr(i, 6)
    Range("F7").Value = sArr(i, 7)
    Range("E8").Value = sArr(i, 8)
    Range("F8").Value = sArr(i, 9)
    Range("D2:F15").PrintPreview ' Xem truoc khi in
    'Range("D2:F15").PrintOut 'In
    strRes = strRes & "," & i
  Next i
  If Len(strRes) Then
    MsgBox ("Da in cac So thu tu: " & Mid(strRes, 2, Len(strRes)))
  Else
    MsgBox ("Du lieu So Thu Tu khong phu hop, Khong In")
  End If
End Sub

Sub Rectangle2_E()
  Dim sArr(), S, eRow&, N, sRow&, i&, ik&, strRes$
  With Sheets("D")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:k" & eRow).Value
  End With
  sRow = UBound(sArr)
  On Error Resume Next
  strRes = Range("B4").Value
  S = Split("," & strRes, ",")
  strRes = ""
  N = UBound(S)
  For i = 1 To N
    If IsNumeric(S(i)) Then
      ik = CLng(S(i))
      If ik > 0 And ik <= sRow Then
        Range("D5").Value = sArr(ik, 1)
        Range("E6").Value = sArr(ik, 4)
        Range("F6").Value = sArr(ik, 5)
        Range("E7").Value = sArr(ik, 6)
        Range("F7").Value = sArr(ik, 7)
        Range("E8").Value = sArr(ik, 8)
        Range("F8").Value = sArr(ik, 9)
       
        Range("D2:F15").PrintPreview ' Xem truoc khi in
        'Range("D2:F15").PrintOut 'In
        strRes = strRes & "," & ik
      End If
    End If
  Next i
  If Len(strRes) Then
    MsgBox ("Da in cac So thu tu: " & Mid(strRes, 2, Len(strRes)))
  Else
    MsgBox ("Du lieu So Thu Tu khong phu hop, Khong In")
  End If
End Sub
Cám ơn anh nhiều!

Mã:
Sub Rectangle1_E()
  Dim sArr(), eRow&, fRow&, sRow&, i&, strRes$
  With Sheets("D")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:K" & eRow).Value
  End With
  sRow = UBound(sArr)
  On Error Resume Next
  fRow = Range("B2").Value
  If fRow < 1 Then fRow = 1
  eRow = Range("C2").Value
  If eRow > sRow Then eRow = sRow
  For i = fRow To eRow
    Range("D5").Value = sArr(i, 1)
    Range("E6").Value = sArr(i, 4)
    Range("F6").Value = sArr(i, 5)
    Range("E7").Value = sArr(i, 6)
    Range("F7").Value = sArr(i, 7)
    Range("E8").Value = sArr(i, 8)
    Range("F8").Value = sArr(i, 9)
    Range("D2:F15").PrintPreview ' Xem truoc khi in
    'Range("D2:F15").PrintOut 'In
    strRes = strRes & "," & i
  Next i
  If Len(strRes) Then
    MsgBox ("Da in cac So thu tu: " & Mid(strRes, 2, Len(strRes)))
  Else
    MsgBox ("Du lieu So Thu Tu khong phu hop, Khong In")
  End If
End Sub

Sub Rectangle2_E()
  Dim sArr(), S, eRow&, N, sRow&, i&, ik&, strRes$
  With Sheets("D")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:k" & eRow).Value
  End With
  sRow = UBound(sArr)
  On Error Resume Next
  strRes = Range("B4").Value
  S = Split("," & strRes, ",")
  strRes = ""
  N = UBound(S)
  For i = 1 To N
    If IsNumeric(S(i)) Then
      ik = CLng(S(i))
      If ik > 0 And ik <= sRow Then
        Range("D5").Value = sArr(ik, 1)
        Range("E6").Value = sArr(ik, 4)
        Range("F6").Value = sArr(ik, 5)
        Range("E7").Value = sArr(ik, 6)
        Range("F7").Value = sArr(ik, 7)
        Range("E8").Value = sArr(ik, 8)
        Range("F8").Value = sArr(ik, 9)
       
        Range("D2:F15").PrintPreview ' Xem truoc khi in
        'Range("D2:F15").PrintOut 'In
        strRes = strRes & "," & ik
      End If
    End If
  Next i
  If Len(strRes) Then
    MsgBox ("Da in cac So thu tu: " & Mid(strRes, 2, Len(strRes)))
  Else
    MsgBox ("Du lieu So Thu Tu khong phu hop, Khong In")
  End If
End Sub
Vậy là mỗi cặp sheet tạo thêm một hai sub nữa phải không anh?
 
Cái này gọi là thừa chứ không thiếu rồi (Có 2 cái giống chỉ khác tên Module )
Anh cho em hỏi em thêm một maccro để tự động hiện dòng khi thêm dữ liệu và ẩn dòng khi dữ liệu là trống.
Thì cần thêm macro vào đâu trong code anh đã giúp để mỗi khi in có thể tự động chèn dòng khi dữ liệu được lấy sang và ẩn dòng khi dữ liệu trống.
Maccro em như sau:
Mã:
Sub Macro5()
    ActiveSheet.Range("$E$5:$E$8").AutoFilter Field:=1, Criteria1:="H"
End Sub
Em đã thêm code trên vào Viewcode > Form_Printts nhưng vẫn không được.

an.png
 

File đính kèm

  • TB.xlsm
    111.8 KB · Đọc: 4
Lần chỉnh sửa cuối:
Anh cho em hỏi em thêm một maccro để tự động hiện dòng khi thêm dữ liệu và ẩn dòng khi dữ liệu là trống.
Thì cần thêm macro vào đâu trong code anh đã giúp để mỗi khi in có thể tự động chèn dòng khi dữ liệu được lấy sang và ẩn dòng khi dữ liệu trống.
Maccro em như sau:
Mã:
Sub Macro5()
    ActiveSheet.Range("$E$5:$E$8").AutoFilter Field:=1, Criteria1:="H"
End Sub
Em đã thêm code trên vào Viewcode > Form_Printts nhưng vẫn không được.

View attachment 228460
Anh HieuCD giúp em mới nhé!
 
Anh cho em hỏi em thêm một maccro để tự động hiện dòng khi thêm dữ liệu và ẩn dòng khi dữ liệu là trống.
Thì cần thêm macro vào đâu trong code anh đã giúp để mỗi khi in có thể tự động chèn dòng khi dữ liệu được lấy sang và ẩn dòng khi dữ liệu trống.
Maccro em như sau:
Mã:
Sub Macro5()
    ActiveSheet.Range("$E$5:$E$8").AutoFilter Field:=1, Criteria1:="H"
End Sub
Em đã thêm code trên vào Viewcode > Form_Printts nhưng vẫn không được.

View attachment 228460
Khỏi cần code và lọc dữ liệu, chỉ cần Format theo điều kiện
 

File đính kèm

  • TB.xlsm
    112.7 KB · Đọc: 5
Khỏi cần code và lọc dữ liệu, chỉ cần Format theo điều kiện
Mất bo viền dưới cùng anh ạ!
Anh cho em hỏi giả sử thêm code trên vào để khi in (bài #26) tự động ẩn/hiện dòng trống thì thêm đoạn code em nêu trên vào phần nào vậy ạ? anh giúp em nhé! để em áp dụng cho lần sau.
Anh xem giúp em mới nhé! cám ơn anh!ggggggggggg.png
 
Anh cho em hỏi em thêm một maccro để tự động hiện dòng khi thêm dữ liệu và ẩn dòng khi dữ liệu là trống.
Thì cần thêm macro vào đâu trong code anh đã giúp để mỗi khi in có thể tự động chèn dòng khi dữ liệu được lấy sang và ẩn dòng khi dữ liệu trống.
Maccro em như sau:
Mã:
Sub Macro5()
    ActiveSheet.Range("$E$5:$E$8").AutoFilter Field:=1, Criteria1:="H"
End Sub
Em đã thêm code trên vào Viewcode > Form_Printts nhưng vẫn không được.

View attachment 228460
Bạn phải giải thích cách nhập dữ liệu vào Form, các thao tác từng bước, mình mới dò các dòng lệnh trong Form và thêm lệnh mới định dạng lại vùng in được
 
Mất bo viền dưới cùng anh ạ!
Anh cho em hỏi giả sử thêm code trên vào để khi in (bài #26) tự động ẩn/hiện dòng trống thì thêm đoạn code em nêu trên vào phần nào vậy ạ? anh giúp em nhé! để em áp dụng cho lần sau.
Anh xem giúp em mới nhé! cám ơn anh!View attachment 228475
File trên máy mình không bị mất, bản có chỉnh gì không?
 
Web KT
Back
Top Bottom