Excel - Penjana auto lembaran kerja

Excel adalah alat yang berguna untuk crunching nombor dan perwakilan data. Apabila digabungkan dengan VBA ia menjadi aplikasi yang sangat dinamik yang boleh disesuaikan untuk senario yang tidak terhitung. Satu contoh sedemikian ialah kes di mana seseorang boleh membuat penjana automatik lembaran kerja yang akan dihasilkan setiap kali suatu entri ditambah atau dipadamkan dari senarai induk . Kod VBA berfungsi sedemikian rupa sehingga penjana automatik mencari nama dalam helaian kunci dan bergerak melalui semua helaian dalam buku kerja. Di mana-mana kriteria yang telah ditentukan adalah dipadankan, ia boleh menambah atau memadamkan lembaran kerja berdasarkan input pengguna .

  • Isu
  • Penyelesaian
  • Catatan

Isu

Saya mempunyai buku kerja dengan helaian nama yang mempunyai semua info yang saya perlukan dimasukkan ke timecard dan helaian master dengan timecard yang pekerja akan mengisi. Bagaimanakah saya boleh menghasilkan satu set baru timecard secara automatik setiap minggu? Saya memerlukannya untuk menamakan helaian dengan nama pekerja di tab supaya mereka dapat mencari kad mereka dan memasukkan semua maklumat dari helaian nama ke kad mereka. Oleh kerana nama-nama baru ditambah atau dipadamkan ke dalam senarai yang akan dalam susunan abjad, ia akan membuat kad baru dengan nama dan akan menghasilkan maklumat yang betul pada setiap kad dari senarai senarai. Bagaimana saya boleh melakukan ini? Saya baru untuk ini dan ini adalah perkara terakhir yang perlu dilakukan.

Penyelesaian

Saya tidak tahu bagaimana nama dan template anda kelihatan seperti

Buat salinan sandaran fail anda

Baca kod dan buat perubahan yang sesuai, saya telah mengulas semuanya untuk anda.

  • Tekan ALT + F11 untuk membuka vbe
  • Klik pada Insert, dan pilih modul
  • Salin dan tampal kod di bawah:

 Sub generateTimeSheets () Dim sMasterNameSheet Sebagai nama string String 'yang mempunyai maklumat pekerja Dim sTimeSheetTempate Sebagai nama String' lembaran yang templat timecard Dim iMaxNameCol Sebagai Integer 'bilangan lajur di mana terdapat baris yang paling dihuni Dim lMaxNameRow Sebagai Integer Dim sTemp As String 'a variable variable Dim vWarning As a Variant' warning for deletion '################################## ################### MENGHUBUNGI DI SINI UNTUK MENJAGA KEPERLUAN ANDA '######################## ######################################## sMasterNameSheet = "Names" 'ini adalah nama kunci yang mempunyai maklumat pekerja sTimeSheetTempate = "Templat Timesheet "ini adalah nama helaian yang merupakan templat kali masa Dim iNameCol Sebagai Integer 'yang mengandungi lembaran maklumat pekerja, mempunyai maklumat nama (tambah lajur lain simili) Dim sEmpName Sebagai nama String pekerja iMaxNameCol = 1' lajur ini pada lembaran pekerja mempunyai bilangan baris maksimum yang diisi dalam iNameCol = 1 'ini ialah lajur di mana empl Nama oyee dijumpai vWarning = MsgBox ("Ini akan memadamkan semua helaian kecuali" _ & sMasterNameSheet & "dan" & sTimeSheetTempate _ & ". Tekan Ya untuk menyampaikan ", vbCritical + vbDefaultButton2 + vbYesNo) 'tidak ingin meneruskan Jika vBarning vbYes Kemudian Keluar Sub' untuk memadamkan semua tetapi kedua-dua helaian 'bergerak melalui semua helaian dalam buku Untuk setiap helaian Lembaran mysheet In Sheets' yang diperiksa di gelung sTemp = mysheet.Name 'jika helaian diperiksa bukan dua helaian kritikal maka hapusnya Jika (UCase (Trim (sTemp)) UCase (Trim (sMasterNameSheet))) Dan _ (UCase (Trim (sTemp) sTimeSheetTempate))) Kemudian mysheet.Delete End Jika Sheets Next (sMasterNameSheet) .Select 'find the maximu number of lines lMaxNameRow = Cells (65536, iMaxNameCol) .End (xlUp) .Row sTemp = sTimeSheetTempate For lThisRow = 2 To lMaxNameRow sEmpName = Sel (lThisRow, iNameCol) sEmpName = Trim (sEmpName) Jika (sEmpName "") Kemudian Lembar (sTimeSheetTempate) .Select Sheets (sTimeSheetTempate) .Copy After: = Sheet (sTemp) ActiveSheet.Name = sEmpName sTemp = sEmpName ' anda perlu membuat perbaikan 'dalam baris sampel ini yang mengatakan bahawa pada template yang baru disalin, dalam sel A1' meletakkan nilai e yang terdapat dalam Lajur A Helaian lembaran kerja (sEmpName) .Range ("A1") = Helaian (sMasterNameSheet) Belakang ("A" & lThisRow) 
  • 4. Tekan F5 untuk menjalankannya

Catatan

Terima kasih kepada rizvisa1 untuk tip ini di forum.

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama