Xin giúp đỡ học về code VBA in theo nhóm trong Excel

Liên hệ QC

nguyenhongphuong0204

Thành viên mới
Tham gia
21/1/20
Bài viết
22
Được thích
1
Xin chào các anh chị.

Em có một file như đính kèm. Đang dự định tạo 1 code in theo nhóm. Chỉ cần chọn nhóm trong Ô M8 thì sẽ in tự động toàn bộ dữ liệu của vùng A2:D13 ở vùng in H4:I7.
Mấy ngày này em mài mò các code nhưng để in theo điều kiện nhóm thì cần khai báo và tạo vùng để đối ứng. Mong nhờ các anh giúp vì em mới bắt đầu với VBA.

Trân trọng
 

File đính kèm

  • In theo nhom.xlsx
    13.8 KB · Đọc: 60
Bạn gửi cả code của bạn nên để mọi người chỉ cho bạn lý do vì sao code không chạy chứ.
 
Upvote 0
Xin chào các anh chị.

Em có một file như đính kèm. Đang dự định tạo 1 code in theo nhóm. Chỉ cần chọn nhóm trong Ô M8 thì sẽ in tự động toàn bộ dữ liệu của vùng A2:D13 ở vùng in H4:I7.
Mấy ngày này em mài mò các code nhưng để in theo điều kiện nhóm thì cần khai báo và tạo vùng để đối ứng. Mong nhờ các anh giúp vì em mới bắt đầu với VBA.

Trân trọng
Thoạt nhìn nội dung tưởng đâu là diễn giải cụ thể, rõ ràng, nhưng khi nhìn kỹ thì chẳng ai hiểu bạn muốn làm cái gì? Cụ thể:
1/ Nhóm tại Cell M8 lấy đâu ra khi mã lại tại I4 lại là 2022221.
2/ Đã có tiêu chí lọc tại I4 :I7 rồi sao còn có vụ M8 khi nó không có liên quan (lấy đâu ra ở tiêu chí vùng in).
3/ Chưa cụ thể mỗi lần chỉ in riêng 1 tiêu chí lọc hay in hàng loạt các tiêu chí với mỗi tiêu chí là 1 trang giấy
 
Upvote 0
Xin chào các anh chị.

Em có một file như đính kèm. Đang dự định tạo 1 code in theo nhóm. Chỉ cần chọn nhóm trong Ô M8 thì sẽ in tự động toàn bộ dữ liệu của vùng A2:D13 ở vùng in H4:I7.
Mấy ngày này em mài mò các code nhưng để in theo điều kiện nhóm thì cần khai báo và tạo vùng để đối ứng. Mong nhờ các anh giúp vì em mới bắt đầu với VBA.

Trân trọng
Tôi không có máy in, bạn chạy thử Sub này xem
PHP:
Option Explicit

Public Sub InNhom()
Dim Arr(), I As Long, R As Long, L As Long, Nhom As String
    Nhom = Range("M8").Value
    L = Len(Nhom)
    Arr = Range("A3", Range("A3").End(xlDown)).Value
    R = UBound(Arr)
For I = 1 To R
    If Left(Arr(I, 1), L) = Nhom Then
        Range("I4").Value = Arr(I, 1)
        Range("G3:I8").PrintOut
    End If
Next I
End Sub
 
Upvote 0
Bạn gửi cả code của bạn nên để mọi người chỉ cho bạn lý do vì sao code không chạy chứ.
Mình đang đọc code trên mạng và không ra được hướng vì vùng A3:A11 thì đặt tên nhưng nó k chạy.
Bài đã được tự động gộp:

Thoạt nhìn nội dung tưởng đâu là diễn giải cụ thể, rõ ràng, nhưng khi nhìn kỹ thì chẳng ai hiểu bạn muốn làm cái gì? Cụ thể:
1/ Nhóm tại Cell M8 lấy đâu ra khi mã lại tại I4 lại là 2022221.
2/ Đã có tiêu chí lọc tại I4 :I7 rồi sao còn có vụ M8 khi nó không có liên quan (lấy đâu ra ở tiêu chí vùng in).
3/ Chưa cụ thể mỗi lần chỉ in riêng 1 tiêu chí lọc hay in hàng loạt các tiêu chí với mỗi tiêu chí là 1 trang giấy
cám ơn anh, e xin giải thích như thế này

1.Cell M8 là nhóm chọn lấy từ list của P2:p4 (3 ký từ đầu của vùng A3:A13), còn I4 là chọn từ mã riêng lẻ ở vùng A3:A13
2. Do em muốn in hàng loạt nhưng theo nhóm P2:p4 (nó là nhóm 3 ký từ đầu của vùng A3:A13)
3. Cái này em đang tìm hiểu cách đặt tên cho nhóm và gán lệnh in hàng loạt cho nhóm đó.

Trân trọng
Bài đã được tự động gộp:

Tôi không có máy in, bạn chạy thử Sub này xem
PHP:
Option Explicit

Public Sub InNhom()
Dim Arr(), I As Long, R As Long, L As Long, Nhom As String
    Nhom = Range("M8").Value
    L = Len(Nhom)
    Arr = Range("A3", Range("A3").End(xlDown)).Value
    R = UBound(Arr)
For I = 1 To R
    If Left(Arr(I, 1), L) = Nhom Then
        Range("I4").Value = Arr(I, 1)
        Range("G3:I8").PrintOut
    End If
Next I
End Sub
Cám ơn anh. EM đang test xem sao

Trân trọng
Bài đã được tự động gộp:

Tôi không có máy in, bạn chạy thử Sub này xem
PHP:
Option Explicit

Public Sub InNhom()
Dim Arr(), I As Long, R As Long, L As Long, Nhom As String
    Nhom = Range("M8").Value
    L = Len(Nhom)
    Arr = Range("A3", Range("A3").End(xlDown)).Value
    R = UBound(Arr)
For I = 1 To R
    If Left(Arr(I, 1), L) = Nhom Then
        Range("I4").Value = Arr(I, 1)
        Range("G3:I8").PrintOut
    End If
Next I
End Sub
Quá đúng và chạy ok quá anh ơi. Cám ơn anh rất nhiều.

Trân trọng
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi không có máy in, bạn chạy thử Sub này xem
PHP:
Option Explicit

Public Sub InNhom()
Dim Arr(), I As Long, R As Long, L As Long, Nhom As String
    Nhom = Range("M8").Value
    L = Len(Nhom)
    Arr = Range("A3", Range("A3").End(xlDown)).Value
    R = UBound(Arr)
For I = 1 To R
    If Left(Arr(I, 1), L) = Nhom Then
        Range("I4").Value = Arr(I, 1)
        Range("G3:I8").PrintOut
    End If
Next I
End Sub
Anh @Ba Tê cho em hỏi xíu là trường hợp
dòng này Arr = Range("A3", Range("A3").End(xlDown)).Value
Em tham chiếu vào sheets khác, không phải sheet hiện hình
ví dụ: Sheet hiện hành tên là "sheets1" mà e tham chiếu sang "sheets2"
Em thay đổi như sau
Arr = Sheets ("sheets2").Range("A3", Range("A3").End(xlDown)).Value
Thì gặp lỗi 1004

Nhờ anh xem giúp giùm. Nếu em tham chiếu sang sheets khác thì mình sẽ làm như thế nào vậy anh?

Trân trọng
 
Upvote 0
Cho em hỏi xíu là trường hợp dòng này Arr = Range("A3", Range("A3").End(xlDown)).Value
Em tham chiếu vào sheets khác, không phải sheet hiện hình
ví dụ: Sheet hiện hành tên là "sheets1" mà e tham chiếu sang "sheets2"
Em thay đổi như sau
Arr = Sheets ("sheets2").Range("A3", Range("A3").End(xlDown)).Value
Thì gặp lỗi 1004
Thử thế này xem sao:
Arr = Sheets ("sheet2").Range("A3", Range("A3").End(xlDown)).Value
 
Upvote 0
Arr = Sheets ("sheets2").Range("A3", Range("A3").End(xlDown)).Value
ABC là tên sheet nhìn thấy bên dưới màn hình Excel.
Arr= sheets("ABC").range("A3",sheets("ABC").range("A3").End(xlDown)).Value

Kết quả gán vào sheet nào cũng phải chỉ rõ.
Ví dụ:
Sheets("GPE").range("I4").value=Arr(I, 1)
Sheets("GPE").range("G3:I8").PrintOut


Nói chùng, Sub sử dụng nhiều sheets, phải chỉ rõ địa chỉ Sheet nào, Range nào...
 
Lần chỉnh sửa cuối:
Upvote 0
@Ba Tê chú cho con hỏi. Con thấy chú hay dùng cái Public ở đầu sub ấy có ý nghĩa gì và có lợi gì khi viết code không thế ạ?
Cám ơn chú trước ạ
 
Upvote 0
Upvote 0
Mở 1 file Excel, ấn Alt+F11, ấn F1, nhập vào khung tìm kiếm "Public Sub", chọn muc Sub Statement.
Xin chào anh,

Em cám ơn vì anh đã hỗ trợ. Với code hôm qua anh cho, em có mài mò thêm 1 chút nữa, là thay vì in dùng lệnh printout, em dùng save để kết xuất ra PDF, tạo ra folder theo Nhom, và tên file theo giá trị name. Nhưng hiện tại bị lỗi và từ đêm qua đến giờ em vẫn chưa tìm ra cách chạy được. Nhờ a khi nào ngó ngang xem giúp em cái code này giúp em với.

Em cám ơn rất nhiều.

Mã:
Public Sub InNhom()
Dim Arr()
Dim I As Long
Dim R As Long
Dim L As Long
Dim Nhom As String
Dim Name As String
Dim duongdan As String
Dim Fileluu As String
    
    Nhom = Sheets("Menu").Range("P5").Value
    L = Len(Nhom)
    Arr = Sheets("data").Range("C3", Sheets("data").Range("C3").End(xlDown)).Value
    R = UBound(Arr)
    duongdan = Application.ActiveWorkbook.Path
    Fileluu = duongdan & "\" & Nhom
For I = 1 To R
    If Left(Arr(I, 1), L) = Nhom Then
        Sheets("Menu").Range("C5").Value = Arr(I, 1)
        Range("A11").AutoFilter Field:=1, Criteria1:="<>"
        Name = Sheets("Menu").Range("C5").Value
        Sheets("Menu").Range("A1:M55").ExportAsFixedFormat Type:=xlTypePDF, Filename:=FolderT & "\" & Name, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    End If
Next I
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom