Excel - Trình tạo tự động Worksheet

Excel là một công cụ hữu ích để crunching số và biểu diễn dữ liệu. Khi kết hợp với VBA, nó trở thành một ứng dụng rất năng động có thể được tùy chỉnh cho vô số tình huống. Một ví dụ như vậy là trường hợp người ta có thể tạo một trình tạo bảng tính tự động sẽ được tạo mỗi khi một mục nhập được thêm hoặc xóa khỏi danh sách chính . Mã VBA hoạt động theo cách mà trình tạo tự động tìm kiếm các tên trong trang chủ và di chuyển qua tất cả các trang tính trong sổ làm việc. Bất cứ nơi nào một tiêu chí được chỉ định trước phù hợp, nó có thể thêm hoặc xóa bảng tính dựa trên đầu vào của người dùng .

  • Vấn đề
  • Dung dịch
  • chú thích

Vấn đề

Tôi có một sổ làm việc với một bảng tên có tất cả thông tin tôi cần đưa vào bảng thời gian và một bảng chính với bảng chấm công mà nhân viên sẽ điền vào. Làm cách nào tôi có thể tự động tạo một bộ thời gian mới mỗi tuần? Tôi cần nó để đặt tên cho các tờ với tên của nhân viên trên tab để họ có thể tìm thấy thẻ của họ và đặt tất cả thông tin từ bảng tên vào thẻ của họ. Vì tên mới được thêm hoặc xóa vào danh sách theo thứ tự bảng chữ cái, nó sẽ tạo ra thẻ mới có tên và sẽ tạo thông tin đúng trên mỗi thẻ từ bảng danh sách. Tôi có thể làm cái này như thế nào? Tôi chưa quen với điều này và đây là điều cuối cùng cần phải làm.

Dung dịch

Tôi không biết tên và mẫu của bạn trông như thế nào

Tạo một bản sao lưu của tập tin của bạn

Đọc mã và thực hiện các thay đổi phù hợp, tôi đã nhận xét mọi thứ cho bạn.

  • Nhấn ALT + F11 để mở vbe
  • Nhấp vào Chèn và chọn mô-đun
  • Sao chép và dán đoạn mã dưới đây:

 Sub createdTimeSheets () Dim sMasterNameSheet As String 'tên của trang tính có thông tin nhân viên Dim sTimeSheetTempate As String' tên của trang tính là mẫu timecard Dim iMaxNameCol As Integer 'số cột trong đó có các hàng được điền nhiều nhất Dim lMaxName sTemp As String 'một biến tạm thời Dim vWarning As Variant' cảnh báo để xóa '################################### ################### TÙY CHỈNH TẠI ĐÂY ĐỂ KIẾM NHU CẦU CỦA BẠN '######################### ############################ sMasterNameSheet = "Tên" 'đây là tên của trang tính có thông tin nhân viên sTimeSheetTempate = "Mẫu biểu thời gian "'Đây là tên của trang tính là mẫu bảng chấm công Dim iNameCol As Integer' mà col trong bảng thông tin nhân viên, có thông tin tên (thêm các cột khác mô phỏng) Dim sEmpName As String 'tên của nhân viên iMaxNameCol = 1' cột này trên trang nhân viên có số lượng hàng tối đa được điền vào iNameCol = 1 'đây là cột nơi empl Tên oyee được tìm thấy vWarning = MsgBox ("Điều này sẽ xóa tất cả các trang ngoại trừ" _ & sMasterNameSheet & "và" & sTimeSheetTempate _ & ". Nhấn Yes để tiếp tục ", vbCritical + vbDefaultButton2 + vbYesNo) 'không muốn tiếp tục Nếu vWarning vbYes Sau đó thoát Sub' để xóa tất cả trừ hai tờ 'di chuyển qua tất cả các tờ trong cuốn sách cho mỗi tờ trong tờ của tôi loop sTemp = mysheet.Name 'nếu kiểm tra trang tính không phải là hai trang tính quan trọng thì hãy xóa nó Nếu ((UCase (Trim (sTemp)) UCase (Trim (sMasterNameSheet))) Và _ (UCase (Trim (sTemp)) UCase (Trim ( sTimeSheetTempate)))) Sau đó mysheet.Delete End If Next Sheets (sMasterNameSheet) .Chọn 'tìm ra số lượng maximu của các hàng lMaxNameRow = Cells (65536, iMaxNameCol) .End (xlUp) .Row sEmpName = Các ô (l ThisRow, iNameCol) sEmpName = Trim (sEmpName) If (sEmpName "") Sau đó Sheets (sTimeSheetTempate) .Select Sheets (sTimeSheetTempate) .Copy After: = Sheets (sT bạn phải thực hiện các sửa lỗi 'trong dòng mẫu này, nó nói rằng trên mẫu mới được sao chép, trong ô A1 của nó' đặt giá trị e tìm thấy trong Cột A của trang tính nhân viên Sheets (sEmpName) .Range ("A1") = Sheets (sMasterNameSheet) .Range ("A" & l ThisRow) End If nextFor: Next End Sub 
  • 4. Nhấn F5 để chạy nó

chú thích

Cảm ơn rizvisa1 cho mẹo này trên diễn đàn.

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên