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

Liên hệ QC

vc_đi chơi

Thành viên hoạt động
Tham gia
21/9/19
Bài viết
159
Được thích
32
Thân ái chào các anh, chị và các bạn trên GPE!
Xin giúp đỡ tôi tạo Form để in dữ liệu
Sheet(VB) được lấy số liệu từ cột thứ tự bên sheet(Tên)
In sheet(VB) theo thứ tự bên sheet(Ten).
Form in có thể chọn theo 2 kiểu:
1/ in từ số này đến số này
2/ In tùy theo số chọn: 1,3,6...
Tôi xin cảm ơn! mong các anh,chị và các bạn giúp!



2222.pngmmmmm.png
 

File đính kèm

  • vn.xlsx
    12.8 KB · Đọc: 5
Thân ái chào các anh, chị và các bạn trên GPE!
Xin giúp đỡ tôi tạo Form để in dữ liệu
Sheet(VB) được lấy số liệu từ cột thứ tự bên sheet(Tên)
In sheet(VB) theo thứ tự bên sheet(Ten).
Form in có thể chọn theo 2 kiểu:
1/ in từ số này đến số này
2/ In tùy theo số chọn: 1,3,6...
Tôi xin cảm ơn! mong các anh,chị và các bạn giúp!



View attachment 227922View attachment 227923
Sau một hồi lần mò em đã tìm ra in từ số này đến số này!
Còn in theo số chọn (1,3,5,6)
Nhờ các bác giúp em mới.
Mã:
Private Sub CommandButton1_Click()
Dim sobatdau As Integer
Dim soketthuc As Integer
sobatdau = txtsobatdau.Text
soketthuc = txtsoketthuc.Text

Dim i As Integer

For i = sobatdau To soketthuc Step 1
Trang_tính1.Range("B8").Value = i
Trang_tính2.PrintOut

Next

End Sub

Private Sub Label2_Click()

End Sub

Private Sub UserForm_Click()

End Sub
aaaaa.png
 

File đính kèm

  • inra1.xlsx
    12.9 KB · Đọc: 4
Thì bạn mò mẫm tiếp xem sao:
1./ Ở lần trước bạn lấy số bản in bắ đầu từ 1 TextBox & bản in cuối từ 1 TextBox khác, thì giờ đây bạn sẽ phải xử lý các ký số bản in mà bạn cần chỉ trên 1 TextBox, & nhập có dạng 2,4,6,
Có nghĩa là các bản in cách nhau 1 dấu phảy & cuối cùng là 1 dấu phảy
2./ Lần trước bạn xài vòng lặp For .. Next thì giờ bạn sẽ phải xài vòng Do . . . . Loop
Điều kiện để thoát vòng lặp sẽ là dấu phảy cuối cùng
Để xác định dấu phảy cuối ta có vài cách, cùi bắp nhất là xài hàm InStr(), ví dụ: VTr = InStr(3, "GPE.COM", ".")

(Mình không có máy in nên đành khuyến cáo vậy thôi, bạn thông cảm & tiếp tục thử xem!)
 
Thì bạn mò mẫm tiếp xem sao:
1./ Ở lần trước bạn lấy số bản in bắ đầu từ 1 TextBox & bản in cuối từ 1 TextBox khác, thì giờ đây bạn sẽ phải xử lý các ký số bản in mà bạn cần chỉ trên 1 TextBox, & nhập có dạng 2,4,6,
Có nghĩa là các bản in cách nhau 1 dấu phảy & cuối cùng là 1 dấu phảy
2./ Lần trước bạn xài vòng lặp For .. Next thì giờ bạn sẽ phải xài vòng Do . . . . Loop
Điều kiện để thoát vòng lặp sẽ là dấu phảy cuối cùng
Để xác định dấu phảy cuối ta có vài cách, cùi bắp nhất là xài hàm InStr(), ví dụ: VTr = InStr(3, "GPE.COM", ".")

(Mình không có máy in nên đành khuyến cáo vậy thôi, bạn thông cảm & tiếp tục thử xem!)
Chúc anh ngày mới nhiều niềm vui!
em chưa hiểu về VBA nên mày mò là tìm trên mạng và lắp ghép, em chưa viết code được.
Phiền anh giúp em ạ!
 
Mình nói rồi: Do không có máy in nên sẽ không thể viết cho bạn, 1 khi chưa thử nghiệm trên thực địa!
 

File đính kèm

  • Baba.jpg
    Baba.jpg
    895 KB · Đọc: 16
Thân ái chào các anh, chị và các bạn trên GPE!
Xin giúp đỡ tôi tạo Form để in dữ liệu
Sheet(VB) được lấy số liệu từ cột thứ tự bên sheet(Tên)
In sheet(VB) theo thứ tự bên sheet(Ten).
Form in có thể chọn theo 2 kiểu:
1/ in từ số này đến số này
2/ In tùy theo số chọn: 1,3,6...
Tôi xin cảm ơn! mong các anh,chị và các bạn giúp!



View attachment 227922View attachment 227923
Thiết kế lại file cho đơn giản, bạn khai báo lại địa chỉ
Mã:
Sub RoundedRectangle1_Click()
  Dim sArr(), eRow&, fRow&, sRow&, i&, strRes$
  With Sheets("Ten")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:C" & 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("G3").Value = sArr(i, 1)
    Range("E1:J16").PrintPreview ' Xem truoc khi in
    'Range("E1:J16").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 RoundedRectangle2_Click()
  Dim sArr(), S, eRow&, N, sRow&, i&, ik&, strRes$
  With Sheets("Ten")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:C" & 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("G3").Value = sArr(ik, 1)
        Range("E1:J16").PrintPreview ' Xem truoc khi in
        'Range("E1:J16").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ùng In
 

File đính kèm

  • nb.xlsb
    21.8 KB · Đọc: 6
Bạn tham khảo thử
Code này mình đi ăn trộm về. Anh chị ngang qua đừng mách anh ấy nhé. Em làm banh ta lông Code của Anh ấy rồi
 

File đính kèm

  • vn.xls
    112 KB · Đọc: 11
Bạn tham khảo thử
Code này mình đi ăn trộm về. Anh chị ngang qua đừng mách anh ấy nhé. Em làm banh ta lông Code của Anh ấy rồi
Tôi cám ơn bạn! rất hay.
Bài đã được tự động gộp:

Thiết kế lại file cho đơn giản, bạn khai báo lại địa chỉ
Mã:
Sub RoundedRectangle1_Click()
  Dim sArr(), eRow&, fRow&, sRow&, i&, strRes$
  With Sheets("Ten")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:C" & 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("G3").Value = sArr(i, 1)
    Range("E1:J16").PrintPreview ' Xem truoc khi in
    'Range("E1:J16").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 RoundedRectangle2_Click()
  Dim sArr(), S, eRow&, N, sRow&, i&, ik&, strRes$
  With Sheets("Ten")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:C" & 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("G3").Value = sArr(ik, 1)
        Range("E1:J16").PrintPreview ' Xem truoc khi in
        'Range("E1:J16").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ùng In
Cám ơn anh
Thiết kế lại file cho đơn giản, bạn khai báo lại địa chỉ
Mã:
Sub RoundedRectangle1_Click()
  Dim sArr(), eRow&, fRow&, sRow&, i&, strRes$
  With Sheets("Ten")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:C" & 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("G3").Value = sArr(i, 1)
    Range("E1:J16").PrintPreview ' Xem truoc khi in
    'Range("E1:J16").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 RoundedRectangle2_Click()
  Dim sArr(), S, eRow&, N, sRow&, i&, ik&, strRes$
  With Sheets("Ten")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:C" & 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("G3").Value = sArr(ik, 1)
        Range("E1:J16").PrintPreview ' Xem truoc khi in
        'Range("E1:J16").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ùng In
Cám ơn Anh HieuCD!
 
Thiết kế lại file cho đơn giản, bạn khai báo lại địa chỉ
Mã:
Sub RoundedRectangle1_Click()
  Dim sArr(), eRow&, fRow&, sRow&, i&, strRes$
  With Sheets("Ten")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:C" & 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("G3").Value = sArr(i, 1)
    Range("E1:J16").PrintPreview ' Xem truoc khi in
    'Range("E1:J16").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 RoundedRectangle2_Click()
  Dim sArr(), S, eRow&, N, sRow&, i&, ik&, strRes$
  With Sheets("Ten")
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 5 Then MsgBox ("Khong co du lieu"): Exit Sub
    sArr = .Range("C6:C" & 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("G3").Value = sArr(ik, 1)
        Range("E1:J16").PrintPreview ' Xem truoc khi in
        'Range("E1:J16").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ùng In
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.
77777.png
888888888.png
 

File đính kèm

  • File chinh.xlsx
    20.9 KB · Đọc: 5
Lần chỉnh sửa cuối:
Bạn tham khảo thử
Code này mình đi ăn trộm về. Anh chị ngang qua đừng mách anh ấy nhé. Em làm banh ta lông Code của Anh ấy rồi
Bạn ơi cho mình hỏi chút nhé!
Mình xem code bạn giúp thì thấy:
Trong các Module không thấy tên sheet cần lấy dữ liệu và sheet được lấy dữ liệu sang
View code trong Form_printts thì thấy chỉ có sub UserForm_Initialize() là có tên sheet cần lấy dữ liệu
Mã:
Private Sub UserForm_Initialize()
    Dim I As Long, K As Long
    With Sheets("Ten")
        If .Range("B" & Rows.Count).End(xlUp).Row < 6 Then
            MsgBox "Khong co du lieu"
            End
Giờ mình muốn áp dụng cho một "cặp" sheet để lấy kiểu dữ liệu như trên thì phải tạo 1 Form nhập liệu mới và các code trong Form bạn viết giúp này có thể dùng được để chỉnh sửa cho Form mới mình đã tạo không?
Cám ơn bạn!
 
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.
Anh xem giúp em.
View attachment 227975
View attachment 227976
Không có tên Sheet là mặc đinh sheet hiện hành, là sheet có các nút lệnh
Tại sao không có số thứ tự 2?
 
Bạn ơi cho mình hỏi chút nhé!
Mình xem code bạn giúp thì thấy:
Trong các Module không thấy tên sheet cần lấy dữ liệu và sheet được lấy dữ liệu sang
View code trong Form_printts thì thấy chỉ có sub UserForm_Initialize() là có tên sheet cần lấy dữ liệu
Mã:
Private Sub UserForm_Initialize()
    Dim I As Long, K As Long
    With Sheets("Ten")
        If .Range("B" & Rows.Count).End(xlUp).Row < 6 Then
            MsgBox "Khong co du lieu"
            End
Giờ mình muốn áp dụng cho một "cặp" sheet để lấy kiểu dữ liệu như trên thì phải tạo 1 Form nhập liệu mới và các code trong Form bạn viết giúp này có thể dùng được để chỉnh sửa cho Form mới mình đã tạo không?
Cám ơn bạn!
Bạn thử đưa dữ liệu thật lên xem nào. Chứ cót két mỗi lần cấu trúc thay đổi thì lại phải chỉnh lại mất công lắm
 
Không có tên Sheet là mặc đinh sheet hiện hành, là sheet có các nút lệnh
Tại sao không có số thứ tự 2?
À em vừa tải lại file cho đúng số thứ tự, em không biết code nên chỉ nhìn thấy chỗ nào có tên sheet hoặc vùng là thay thôi.
Nhờ anh xe giúp em để em cũng như mọi người có thể áp dụng linh hoạt với người chưa hiểu về code như em
Cám ơn anh!
Bài đã được tự động gộp:

Bạn thử đưa dữ liệu thật lên xem nào. Chứ cót két mỗi lần cấu trúc thay đổi thì lại phải chỉnh lại mất công lắm
Không phải là dữ liệu không thật đâu bạn, mình muốn nếu có thể thì có thể áp dụng linh hoạt.
Vâng, tại vì mình do công việc giả sử mình muốn thêm dữ liệu vào (một cặp sheet) kiểu vậy, thì hỏi bạn có thể chỉnh sửa như nào cho linh động
Mình hiểu là sẽ tạo thêm một Form mới, và muốn tận dụng code từ Form cũ của bạn. Nếu được bạn giúp.
File sau mình thêm vào 02 sheet "D" và "E"
Cần lấy dữ liệu từ "D" sang "E"
Cám ơn bạn nhé!
 

File đính kèm

  • vn1.xls
    108.5 KB · Đọc: 6
Lần chỉnh sửa cuối:
À em vừa tải lại file cho đúng số thứ tự, em không biết code nên chỉ nhìn thấy chỗ nào có tên sheet hoặc vùng là thay thôi.
Nhờ anh xe giúp em để em cũng như mọi người có thể áp dụng linh hoạt với người chưa hiểu về code như em
Cám ơn anh!
Bài đã được tự động gộp:


Không phải là dữ liệu không thật đâu bạn, mình muốn nếu có thể thì có thể áp dụng linh hoạt.
Vâng, tại vì mình do công việc giả sử mình muốn thêm dữ liệu vào (một cặp sheet) kiểu vậy, thì hỏi bạn có thể chỉnh sửa như nào cho linh động
Mình hiểu là sẽ tạo thêm một Form mới, và muốn tận dụng code từ Form cũ của bạn. Nếu được bạn giúp.
File sau mình thêm vào 02 sheet "D" và "E"
Cần lấy dữ liệu từ "D" sang "E"
Cám ơn bạn nhé!
1573213615837.png
- Selected data: Vùng dữ liệu nguồn (bao gồm cả tiêu đề)
- Destination: Ô đích chứa số thứ tự (Trong File là E3)
 

File đính kèm

  • vn1.xls
    191 KB · Đọc: 11

File đính kèm

  • thu lai.xlsm
    135.3 KB · Đọc: 8
Web KT
Back
Top Bottom