Gå til innhold

[Løst] Excel: Automatisk overføre data fra ett sheet til ett annet


Pviggo

Anbefalte innlegg

Hei! 

Ser at en lignende tråd har vært, men klarer ikke å tilpasse macroene inn til å fungere hos meg. 

 

Jeg har lagd en arbeidsbok hvor det første arket er en oversikt over hva som er i "hospitalet" mens ark nr 2 er medisiner og ark nr 3 er utstyr. I kolonne J er medisiner mens kolonne K er utstyr. 

 

Jeg ønsker å sette inn en macro som gjør at ett kryss i "J" gjør at den infoen blir kopiert over til ark nr 2 og hele tiden er oppdatert. 

 

Jeg har lekt meg med en macro som jeg har lagt inn i modules, men den oppdaterer seg ikke automatisk. Må jeg evt lage en refresher knapp eller kan dette løses med noen komando i form av macro.

 

Sub overfore ()

Application.screenUpdating = True

Sheets ("Hospital").Select

Cells.Select

Selection.AutoFilter

Selection.Autofilter field:=10, Criteria1:="=X"

Selection.Specialcells(xlCellTypeVisible).Select

Selection.Copy

 

Sheets("Medicines").Select

Cells.Select

 

ActiveSheet.Paste

Application.CutCopyMode = False

Sheets("Hospital").Select

Range("A1").Select

ActiveSheet.AutofilterMode = False

Application.ScreenUpdating = True

 

Sheets ("Hospital").Select

Cells.Select

Selection.AutoFilter

Selection.AutoFilter field:=11, Criteria1:="=X"

Selection.SpecialCells(xlCellTypeVisible).Select

Selection.Copy

Application.ScreenUpdating = True

Sheets ("Equipment").Select

Cells.Select

ActiveSheet.Paste

Application.CutCopyMode = False

Sheets("Hospital").Select

Range("A1").Select

ActiveSheet.AutoFilterMode = False

Application.ScreenUpdating = True

 

End Sub

 

Jeg er relativt fersk med å bruke macroer og har ikke fullstendig kontroll over alle kodene, men er svært lærevillig. 

 

Håper noen har ett eller noen gode forslag til løsning

Endret av Pviggo
Lenke til kommentar
Videoannonse
Annonse

Hei

 

Vi har denne diskusjonen noen ganger; hva bør utløse en handling? Jeg er sterk tilhenger av å klikke en knapp, eventuelt også bekrefte et ja-nei-spørsmål hvis det er irreversible handlinger.

 

Allikevel, "automatisk" finner du ikke i vanlige moduler, men i hvert arks modul og i modulen til ThisWorkbook. Der er en del preprogrammerte tomme handlinger som utløses idet ett eller annet foregår. Du kommer til disse ved å velge i nedtrekksmenyene over modulen, hvilket objekt det gjelder i den venstre, og så hvilken hendelse i den høyre. Dette er en oversikt over tilbudet for det enkelte regneark:

https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet_events(v=vs.120).aspx

 

I ditt tilfelle tror jeg din løsning vil være noe a la

 

Private Sub Worksheet_Change(ByVal Target as Range)

If ' skriv betingelsen her, then

Call Overfor

End If

End Sub

 

HTH. Beste hilsen Harald

  • Liker 1
Lenke til kommentar

Hei

 

Vi har denne diskusjonen noen ganger; hva bør utløse en handling? Jeg er sterk tilhenger av å klikke en knapp, eventuelt også bekrefte et ja-nei-spørsmål hvis det er irreversible handlinger.

 

Allikevel, "automatisk" finner du ikke i vanlige moduler, men i hvert arks modul og i modulen til ThisWorkbook. Der er en del preprogrammerte tomme handlinger som utløses idet ett eller annet foregår. Du kommer til disse ved å velge i nedtrekksmenyene over modulen, hvilket objekt det gjelder i den venstre, og så hvilken hendelse i den høyre. Dette er en oversikt over tilbudet for det enkelte regneark:

https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet_events(v=vs.120).aspx

 

I ditt tilfelle tror jeg din løsning vil være noe a la

 

Private Sub Worksheet_Change(ByVal Target as Range)

If ' skriv betingelsen her, then

Call Overfor

End If

End Sub

 

HTH. Beste hilsen Harald

 

 

Hei Harald og takk for svar!

Jeg har forsøkt å legge inn automatisk, uten å lykkes. 

 

Jeg ser at den macroen jeg har satt inn for å overføre ikke er helt optimal heller, da den kopierer hele siden.

 

Jeg har nå forsøkt å lage en ny arbeidsbok, og ser da heller etter muligheten for å legge inn en macro som overfører alt som er under rad 7, da det som er over rad 7 er overskrift og heading. Dette skal aktiveres med X i kolonne J som overføres til sheet 2 mens kolonne K overføres til sheet 3. Tenkte å ha en skjema kontrol knapp (Button form control) som oppdaterer arbeidsboken.

 

Finnes det en enkel macro som tar hensyn til disse behovene?

 

Se vedlagt bilde, alle (3) arkene er like.

 

På forhånd takk for hjelpen

 

Per Bratli

 

post-385040-0-90441800-1438450820_thumb.jpg

Endret av Pviggo
Lenke til kommentar

Hei igjen Per

 

Nei, ingen enkel makro, dette er ikke enkelt. Men prøv å brekke ned oppgaven i små deler og løs en og en bit. Type hvordan få en knapp til å kjøre en makro, hvordan få en makro til å kjøre hvis jeg skriver X i en bestemt kolonne, hvordan merke hele raden jeg skriver X i, hvordan finne ut hva som er nederste brukte rad, hvordan slette innholdet i en rad, hvordan finne første ledige rad i et annet ark, ...

 

Beste hilsen Harald

Lenke til kommentar

Hei igjen Per

 

Nei, ingen enkel makro, dette er ikke enkelt. Men prøv å brekke ned oppgaven i små deler og løs en og en bit. Type hvordan få en knapp til å kjøre en makro, hvordan få en makro til å kjøre hvis jeg skriver X i en bestemt kolonne, hvordan merke hele raden jeg skriver X i, hvordan finne ut hva som er nederste brukte rad, hvordan slette innholdet i en rad, hvordan finne første ledige rad i et annet ark, ...

 

Beste hilsen Harald

Takk igjen Harald!

Da har jeg endelig løst oppgaven, ved å brekke ned oppgaven og tenke enkelt. 

 

Fant en nettside med nyttig kurs materiale, http://www.homeandlearn.org/index.htmlsom ga meg verktøy til å forstå hvordan macro'er er bygd opp. 

 

Macroen ble til slutt:

 

Sub overfore()
 
Sheets("Medicines").Select
Range("A7:L500").Select
Selection.ClearContents
 
 
 
Sheets("Hospital").Select
Range("A7:L500").Select
Selection.AutoFilter
Selection.AutoFilter field:=9, Criteria1:="=X"
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
 
Sheets("Medicines").Select
Range("A7").Select
ActiveSheet.Paste
Application.CutCopyMode = False
 
Sheets("Hospital").Select
Range("A7").Select
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
 
Sheets("Equipment").Select
Range("A7:L500").Select
Selection.ClearContents
 
Sheets("Hospital").Select
Range("A7:L500").Select
Selection.AutoFilter
Selection.AutoFilter field:=10, Criteria1:="=X"
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
 
Sheets("Equipment").Select
Range("A7").Select
ActiveSheet.Paste
Application.CutCopyMode = False
 
Sheets("Hospital").Select
Range("A7").Select
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
 
 
End Sub
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...