Excel - generator delovnega lista

Excel je priročno orodje za branje številk in predstavitev podatkov. V kombinaciji z VBA postane zelo dinamična aplikacija, ki jo je mogoče prilagoditi za nešteto scenarijev. Eden od takih primerov je primer, ko lahko ustvarite samodejni generator delovnih listov, ki bodo ustvarjeni vsakič, ko se doda ali izbriše vnos iz glavnega seznama . Koda VBA deluje tako, da avto generator išče imena v glavnem listu in se premika skozi vse liste v delovnem zvezku. Kjer se prednastavljena merila ujemajo, lahko dodajo ali izbrišejo delovne liste, ki temeljijo na vnosu uporabnika .

  • Težava
  • Rešitev
  • Opomba

Težava

Imam delovni zvezek z listom z imeni, ki vsebuje vse informacije, ki jih potrebujem, in jih postavim na časovni kartici in glavni list s časovnim načrtom, ki ga bo zaposleni izpolnil. Kako lahko vsak teden sam sam ustvarim nov komplet časovnih kartic? Potrebujem ga, da na zavihku poimenujem liste z imenom zaposlenega, tako da lahko najdejo svojo kartico in dajo vse informacije iz lista z imeni na svojo kartico. Ko se nova imena dodajo ali izbrišejo na seznam, ki bo v abecednem vrstnem redu, bo nova kartica z imeni in bo ustvarila prave informacije na vsaki kartici s seznama. Kako lahko to storim? Jaz sem novost v tem in to je zadnja stvar, ki jo je treba storiti.

Rešitev

Ne vem, kako izgleda vaše ime in predlogo

Naredite varnostno kopijo datoteke

Preberite kodo in naredite ustrezne spremembe, vse sem komentiral.

  • Pritisnite ALT + F11, da odprete vbe
  • Kliknite Vstavi in ​​izberite modul
  • Kopirajte in prilepite spodnjo kodo:

 Sub generateTimeSheets () Dim sMasterNameSheet As String 'ime lista, ki ima podatke o zaposlenem Dim sTimeSheetTempate As String' ime lista, ki je vzorec timecard Dim iMaxNameCol As Integer 'številka stolpca, pod katerim je najbolj naseljenih vrstic Dim lMaxNameRow As Integer Dim sTemp As String 'spremenljivka temp Dim v Opozorilo kot varianta' opozorilo za brisanje '################################## ################### PRILAGAJAMO TUKAJ, DA SE NADALJUJE VAŠE POTREBE '######################## ############################ sMasterNameSheet = "Imena" "to je ime lista, ki ima podatke o zaposlenih sTimeSheetTempate =" Predloga za časovni načrt "" to je ime lista, ki je časovna šablona Dim iNameCol As Integer ', ki je v informacijskem listu zaposlenega, vsebuje informacije o imenu (dodaj podobne druge stolpce) Dim sEmpName Kot String' ime zaposlenega iMaxNameCol = 1 'v tem stolpcu Zaposleni ima največje število zapolnjenih vrstic v iNameCol = 1 'to je stolpec, kjer empl Ime oyee najdemo vWarning = MsgBox ("To bo izbrisalo vse liste, razen" _ & sMasterNameSheet & "in" & sTimeSheetTempate _ & ". Pritisnite Yes za conitnue ", vbCritical + vbDefaultButton2 + vbYesNo)" ne želite nadaljevati Če vWarning vbYes Nato Exit Sub "izbrišete vse liste razen obeh listov, se premaknite skozi vse liste v knjigi Za vsako listo v preglednici v preglednicah loop sTemp = mysheet.Name ', če pregled plošče ni dva kritična lista, ga izbrišite Če ((UCase (Trim (sTemp)) UCase (Trim (sMasterNameSheet))) in _ (UCase (Trim (sTemp)) UCase (Trim sTimeSheetTempate)))) Nato mysheet.Delete End Če Next Sheets (sMasterNameSheet) .Izberite 'ugotoviti maximu število vrstic lMaxNameRow = Celice (65536, iMaxNameCol) .End (xlUp). sEmpName = Celice (lThisRow, iNameCol) sEmpName = Trim (sEmpName) Če (sEmpName "") Potem listi (sTimeSheetTempate) .Izberi liste (sTimeSheetTempate) .Kopiraj po: = listi (sTemp) v tej vrstici z vzorcem morate narediti popravke, "pravi, da na novo kopirani predlogi, v njeni celici A1" e najdete v stolpcu A listov delovnega lista (sEmpName) .Range ("A1") = Listi (sMasterNameSheet) .Range ("A" & lThisRow) Konec Če naslednjaFor: Next End Sub 
  • 4. Pritisnite F5, da ga zaženete

Opomba

Hvala za rizvisa1 za ta nasvet na forumu.

Prejšnji Članek Naslednji Članek

Top Nasveti