Excel - Arbeidsark auto generator

Excel er et praktisk verktøy for nummerkrepping og datarrepresentasjon. Når det kombineres med VBA, blir det en svært dynamisk applikasjon som kan tilpasses for utallige scenarier. Et slikt eksempel er et tilfelle hvor man kan lage en automatisk generator av regneark som vil bli generert hver gang en oppføring legges til eller slettes fra en hovedliste . VBA-koden fungerer på en slik måte at den automatiske generatoren ser etter navnene i hovedarket og beveger seg gjennom alle arkene i arbeidsboken. Uansett hvor en forhåndsdefinert kriterie er tilpasset, kan den legge til eller slette regneark basert på brukerens innspill .

  • Utgave
  • Løsning
  • Merk

Utgave

Jeg har en arbeidsbok med et navneskilt som har all den informasjonen jeg trenger å sette inn på tidskort og et hovedark med tidskortet som medarbeideren skal fylle ut. Hvordan kan jeg automatisk generere et nytt sett med tidskort hver uke? Jeg trenger det for å navngi arkene med medarbeiderens navn på fanen, slik at de kan finne sitt kort og legge all informasjon fra navneskiltet på kortet sitt. Som nye navn blir lagt til eller slettet i listen som vil være i alfabetisk rekkefølge, vil det gjøre det nye kortet med navnene og vil generere den riktige informasjonen på hvert kort fra listebladet. Hvordan kan jeg gjøre dette? Jeg er ny på dette, og dette er det siste som må gjøres.

Løsning

Jeg aner ikke hvordan navnet ditt og malen ser ut

Lag en sikkerhetskopi av filen din

Les koden og foreta de nødvendige endringene, jeg har kommentert alt for deg.

  • Trykk ALT + F11 for å åpne vbe
  • Klikk på Sett inn, og velg modul
  • Kopier og lim inn koden nedenfor:

 Sub generereTimeSheets () Dim sMasterNameSheet As String 'navn på arket som har ansattinformasjon Dim sTimeSheetTempate Som String' navn på arket som er tidsskriftsmal Dim iMaxNameCol As Integer 'kolonnenummeret der det er mest befolket rader Dim lMaxNameRow Som Integer Dim sTemp As String "en temp variabel Dim vWarning As Variant 'advarsel for sletting' ############################################################################################# ######################################################################################## anmeldelser () #######################################################################..s.???????????????????????????????????????? "'dette er navnet på arket som er tidsskjema mal Dim iNameCol As Integer' som kol i ansattes informasjonsside, har navninformasjon (legg til lignende andre kolonner) Dim sEmpName Som Strings navn på medarbeider iMaxNameCol = 1 'denne kolonnen på Arbeidsblad har maksimalt antall rader fylt iNameCol = 1 'dette er kolonnen hvor empl oyee navn er funnet vWarning = MsgBox ("Dette vil slette alle ark unntatt" _ & sMasterNameSheet & "og" & sTimeSheetTempate _ & ". Trykk på Yes for conitnue ", vbCritical + vbDefaultButton2 + vbYesNo) 'ønsker ikke å fortsette Hvis vWarning vbYes Der Exit Sub' for å slette alle, men de to arkene 'flyttes gjennom alle arkene i boken For hvert ark i arkets ark blir undersøkt i sløyfe sTemp = mysheet.Name 'hvis ark undersøkelse ikke er to kritiske ark, og slett det hvis (UCase (Trim (sTemp)) UCase (Trim (sMasterNameSheet)) Og _ (UCase (Trim (sTemp)) UCase (Trim sTimeSheetTempate))) Så mysheet.Delete End hvis neste ark (sMasterNameSheet) .Velg 'finn ut maksimal antall rader lMaxNameRow = Cells (65536, iMaxNameCol) .End (xlUp) .Row sTemp = sTimeSheetTempate For lThisRow = 2 Til lMaxNameRow sEmpName = Cells (lThisRow, iNameCol) sEmpName = Trim (sEmpName) Hvis (sEmpName "") Så Ark (sTimeSheetTempate) .Velg ark (sTimeSheetTempate) .Kopi Etter: = Ark (sTemp) ActiveSheet.Name = sEmpName sTemp = sEmpName 'her du må gjøre feilene i denne utvalgslinjen, det sier at i den nylig kopierte malen, i sin celle A1 'satt verdiene e finner du i kolonne A i ansattesarkets ark (sEmpName) .Range ("A1") = Ark (sMasterNameSheet) .Range ("A" & lThisRow) Slutt hvis nextFor: Next End Sub 
  • 4. Trykk F5 for å kjøre den

Merk

Takk til rizvisa1 for dette tipset på forumet.

Forrige Artikkel Neste Artikkel

Beste Tips