Cần giúp: coppy sheet và chạy macco tự động

Liên hệ QC

lebuinhat

Thành viên mới
Tham gia
14/6/11
Bài viết
16
Được thích
3
Kính chào các bạn trong diễn đàn!
Mình đang có vấn đề cần các bạn trong diễn đàn giúp đỡ như sau:
1. Trong file exel đính kèm mình muốn coppy sheet "mẫu" thành nhiều sheet ( số sheet băng số sheet trong côt tên sheet ở sheet "TH_Gia") và đổi tên các sheet đó như cột B (tên sheet) trong sheet "TH_Gia"
2. Các sheet được tạo giá ứng với từng sheet có 1 macco đi kèm. làm thế nào để có thể tự động chạy các file macco ( cột N (tên maco) trong sheet "TH_Gia") đó cho từng sheet?
 

File đính kèm

  • tinh khoi luong nhom.xls
    144.5 KB · Đọc: 15
Kính chào các bạn trong diễn đàn!
Mình đang có vấn đề cần các bạn trong diễn đàn giúp đỡ như sau:
1. Trong file exel đính kèm mình muốn coppy sheet "mẫu" thành nhiều sheet ( số sheet băng số sheet trong côt tên sheet ở sheet "TH_Gia") và đổi tên các sheet đó như cột B (tên sheet) trong sheet "TH_Gia"
2. Các sheet được tạo giá ứng với từng sheet có 1 macco đi kèm. làm thế nào để có thể tự động chạy các file macco ( cột N (tên maco) trong sheet "TH_Gia") đó cho từng sheet?
Bạn dùng tạm code này xem sao.
Mã:
Sub GPE()
Dim arr(), i As Integer
arr = Sheet26.Range("B2:N" & Sheet26.Range("B65000").End(xlUp).Row).Value
For i = LBound(arr, 1) To UBound(arr, 1)
    Sheet3.Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
    Sheets(ThisWorkbook.Worksheets.Count).Name = arr(i, 1)
    Sheets(ThisWorkbook.Worksheets.Count).Range("D4") = arr(i, 13)
Next i
End Sub
 
Bạn dùng tạm code này xem sao.
Mã:
Sub GPE()
Dim arr(), i As Integer
arr = Sheet26.Range("B2:N" & Sheet26.Range("B65000").End(xlUp).Row).Value
For i = LBound(arr, 1) To UBound(arr, 1)
    Sheet3.Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
    Sheets(ThisWorkbook.Worksheets.Count).Name = arr(i, 1)
    Sheets(ThisWorkbook.Worksheets.Count).Range("D4") = arr(i, 13)
Next i
End Sub
Cám ơn bạn đã giúp.
Nhưng cho mình hỏi thêm 1 chút, nêu mình muốn thay địa chỉ trong code thì bị lỗi mong bạn chỉ xem lỗi ở đâu giúp mình.
Mã:
Sub GPE()
Dim arr(), i As Integer
arr = Sheets(TH_Gia).Range("B2:N" & Sheets(TH_Gia).Range("B65000").End(xlUp).Row).Value
For i = LBound(arr, 1) To UBound(arr, 1)
    Sheets(TH_nhom_kinh).Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
    Sheets(ThisWorkbook.Worksheets.Count).Name = arr(i, 1)
    Sheets(ThisWorkbook.Worksheets.Count).Range("D4") = arr(i, 13)
Next i
End Sub
 
Cám ơn bạn đã giúp.
Nhưng cho mình hỏi thêm 1 chút, nêu mình muốn thay địa chỉ trong code thì bị lỗi mong bạn chỉ xem lỗi ở đâu giúp mình.
Mã:
Sub GPE()
Dim arr(), i As Integer
arr = Sheets(TH_Gia).Range("B2:N" & Sheets(TH_Gia).Range("B65000").End(xlUp).Row).Value
For i = LBound(arr, 1) To UBound(arr, 1)
    Sheets(TH_nhom_kinh).Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
    Sheets(ThisWorkbook.Worksheets.Count).Name = arr(i, 1)
    Sheets(ThisWorkbook.Worksheets.Count).Range("D4") = arr(i, 13)
Next i
End Sub
Sheets("TH_nhom_kinh").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
 
Sheets("TH_nhom_kinh").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
Cám ơn bạn mình đã hiểu cách tạo sheet 1 cách tự động .
bạn có thể giúp mình sử lý việc chạy macro tự động nữa được không? cột N mình lấy tên các macro làm vi dụ , các đoạn code của các macro này là viết lại tên macro vào ô D4 của sheet mới được tao ra.

rất mong được sự giúp đỡ của bạn! cám ơn bạn 1 lần nữa
 
Cám ơn bạn mình đã hiểu cách tạo sheet 1 cách tự động .
bạn có thể giúp mình sử lý việc chạy macro tự động nữa được không? cột N mình lấy tên các macro làm vi dụ , các đoạn code của các macro này là viết lại tên macro vào ô D4 của sheet mới được tao ra.

rất mong được sự giúp đỡ của bạn! cám ơn bạn 1 lần nữa
Mã:
Sub GPE()
  Dim arr(), i As Integer, StrSub As String
  arr = Sheets("TH_Gia").Range("B2:N" & Sheets("TH_Gia").Range("B65000").End(xlUp).Row).Value
  For i = LBound(arr, 1) To UBound(arr, 1)
    Sheets("TH_nhom_kinh").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
    Sheets(ThisWorkbook.Worksheets.Count).Name = arr(i, 1)
    StrSub = arr(i, 13)
    Select Case StrSub
    Case "XF_CD_MQ"
      Call XF_CD_MQ
    Case "XF_FIX"
      Call XF_FIX
    Case "XF_CT_FIX"
      Call XF_CT_FIX
    Case "XF_CD_MQ_1C"
      Call XF_CD_MQ_1C
    End Select
Next i
End Sub
 
Mã:
Sub GPE()
  Dim arr(), i As Integer, StrSub As String
  arr = Sheets("TH_Gia").Range("B2:N" & Sheets("TH_Gia").Range("B65000").End(xlUp).Row).Value
  For i = LBound(arr, 1) To UBound(arr, 1)
    Sheets("TH_nhom_kinh").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
    Sheets(ThisWorkbook.Worksheets.Count).Name = arr(i, 1)
    StrSub = arr(i, 13)
    Select Case StrSub
    Case "XF_CD_MQ"
      Call XF_CD_MQ
    Case "XF_FIX"
      Call XF_FIX
    Case "XF_CT_FIX"
      Call XF_CT_FIX
    Case "XF_CD_MQ_1C"
      Call XF_CD_MQ_1C
    End Select
Next i
End Sub
Bạn cho mình hỏi thêm 1 chút. Nếu mình có n macro thì mình khai bao tên cho cả n macro đúng không bản
 
Bạn cho mình hỏi thêm 1 chút. Nếu mình có n macro thì mình khai bao tên cho cả n macro đúng không bản
Thì phương án tạm thời là như vậy (tất nhiên hiện tại với n là một số hữu hạn nho nhỏ, be bé). Khi nào bạn viết được n macro hữu hạn to to, bự bự thì lúc đó tự nhiên có cách liền. :)
 
Thì phương án tạm thời là như vậy (tất nhiên hiện tại với n là một số hữu hạn nho nhỏ, be bé). Khi nào bạn viết được n macro hữu hạn to to, bự bự thì lúc đó tự nhiên có cách liền. :)
Bạn có phương án nào ko? Chỉ giúp mình Với?
Mình làm về cửa, với mỗi dang cửa có một Moden riêng nên n cũng khá nhiều. Có cách nào khai báo mà không phải liệt kê từng loại Moden ra mà mấy vẫn hiểu không bạn?
Và có thể thêm vào trong code phần kiểm tra khi mình viết sai tên hoặc bỏ trống trong phần cột N của sheet "TH_Gia" sẽ viết vào ô D4 của sheet tương ứng là "không có macro"
 
Kính chào các bạn trong diễn đàn!
Mình đang có vấn đề cần các bạn trong diễn đàn giúp đỡ như sau:
1. Trong file exel đính kèm mình muốn coppy sheet "mẫu" thành nhiều sheet ( số sheet băng số sheet trong côt tên sheet ở sheet "TH_Gia") và đổi tên các sheet đó như cột B (tên sheet) trong sheet "TH_Gia"
2. Các sheet được tạo giá ứng với từng sheet có 1 macco đi kèm. làm thế nào để có thể tự động chạy các file macco ( cột N (tên maco) trong sheet "TH_Gia") đó cho từng sheet?
Góp ý cho bạn:
1/ Bạn không nên coppy sheet "mẫu" thành nhiều sheet và cái không nên nữa là cứ mỗi sheet thêm lại gán cho nó 1 Macro.
2/ theo tôi thì bạn nên làm thế này:
- Thiết kế 1 sheet (gọi là sheet theo dõi sản xuất) lưu dữ liệu cần của sheet mẫu, dựa vào sheet theo dõi để tổng hợp các đơn hàng, nếu bạn để riêng hàng trăm sheet thì làm cách nào để tổng hợp (trong File chứa quá nhiều hình sẽ làm cho File chậm chạp và tăng dung lượng File bất thường).
- Tất cả Macro dùng tính toán hay thao tác gì gì đó chỉ áp dụng duy nhất cho sheet mẫu, sau đó thì lưu dữ liệu vào sheet theo dõi sản xuất, sheet mẫu nên có 1 Cell chứa số lệnh sản xuất (nếu cần truy vấn lệnh sản xuất nào thì căn cứ vào số này) và 1 Cell nữa chứa tên hình mẫu để khi truy vấn lệnh sản xuất thì nó gọi hình tương ứng trong Folder ra sheet mẫu.
- Hình mẫu được chứa trong 1 Folder nào đó, với tên hình tương ứng với lệnh sản xuất.
- Tất cả nội dung tôi nêu bạn có thể tham khảo cách lấy áp giá và gán hình ảnh vào sheet mẫu, cách tạo 1 đơn hàng: Đầu tiên mở Form áp giá (nó đơn hàng cũ), chọn giá trên Form và nhấn nút áp giá nó gán nội dung và hình).

Để hiểu rõ hơn về nội dung tôi góp ý, bạn tải File trong bài viết ở link sau để tham khảo.
https://www.giaiphapexcel.com/diendan/threads/theo-dõi-và-truy-vấn-đơn-thuốc-nơi-phòng-khám-bệnh.126073/

A_H_1.JPGA_H_2.JPG

Sau khi chọn giá trên Form và nhấn nút áp giá nó gán nội dung và hình thế này.
A_H_3.JPG
 
Lần chỉnh sửa cuối:
Bạn cho mình hỏi thêm 1 chút. Nếu mình có n macro thì mình khai bao tên cho cả n macro đúng không bản
Bạn thay đoạn code của @HieuCD thế này xem sao?
Mã:
Select Case StrSub
    Case "XF_CD_MQ"
      Call XF_CD_MQ
    Case "XF_FIX"
      Call XF_FIX
    Case "XF_CT_FIX"
      Call XF_CT_FIX
    Case "XF_CD_MQ_1C"
      Call XF_CD_MQ_1C
    End Select
Thành thế này.
Mã:
Application.Run StrSub
 
Bạn thay đoạn code của @HieuCD thế này xem sao?
Mã:
Select Case StrSub
    Case "XF_CD_MQ"
      Call XF_CD_MQ
    Case "XF_FIX"
      Call XF_FIX
    Case "XF_CT_FIX"
      Call XF_CT_FIX
    Case "XF_CD_MQ_1C"
      Call XF_CD_MQ_1C
    End Select
Thành thế này.
Mã:
Application.Run StrSub
Rất cám ơn bạn. Có đoạn code này công việc của mình đã đơn giản đi rất nhiều.
 
Góp ý cho bạn:
1/ Bạn không nên coppy sheet "mẫu" thành nhiều sheet và cái không nên nữa là cứ mỗi sheet thêm lại gán cho nó 1 Macro.
2/ theo tôi thì bạn nên làm thế này:
- Thiết kế 1 sheet (gọi là sheet theo dõi sản xuất) lưu dữ liệu cần của sheet mẫu, dựa vào sheet theo dõi để tổng hợp các đơn hàng, nếu bạn để riêng hàng trăm sheet thì làm cách nào để tổng hợp (trong File chứa quá nhiều hình sẽ làm cho File chậm chạp và tăng dung lượng File bất thường).
- Tất cả Macro dùng tính toán hay thao tác gì gì đó chỉ áp dụng duy nhất cho sheet mẫu, sau đó thì lưu dữ liệu vào sheet theo dõi sản xuất, sheet mẫu nên có 1 Cell chứa số lệnh sản xuất (nếu cần truy vấn lệnh sản xuất nào thì căn cứ vào số này) và 1 Cell nữa chứa tên hình mẫu để khi truy vấn lệnh sản xuất thì nó gọi hình tương ứng trong Folder ra sheet mẫu.
- Hình mẫu được chứa trong 1 Folder nào đó, với tên hình tương ứng với lệnh sản xuất.
- Tất cả nội dung tôi nêu bạn có thể tham khảo cách lấy áp giá và gán hình ảnh vào sheet mẫu, cách tạo 1 đơn hàng: Đầu tiên mở Form áp giá (nó đơn hàng cũ), chọn giá trên Form và nhấn nút áp giá nó gán nội dung và hình).

Để hiểu rõ hơn về nội dung tôi góp ý, bạn tải File trong bài viết ở link sau để tham khảo.
https://www.giaiphapexcel.com/diendan/threads/theo-dõi-và-truy-vấn-đơn-thuốc-nơi-phòng-khám-bệnh.126073/

View attachment 196199View attachment 196200

Sau khi chọn giá trên Form và nhấn nút áp giá nó gán nội dung và hình thế này.
View attachment 196201
Cám ơn bạn đã góp ý cho mình. Mình sẽ nghiên cứu xem thay đổi Form để làm sao cho đơn giản và tối ưu nhất. Nếu có gì không hiểu mong được bạn chỉ bảo thêm cho mình.
 
Web KT

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

Back
Top Bottom