Gå til innhold

[Løst] Excel VBA - Hvilke celler er kopiert?


Anbefalte innlegg

Jeg har et tillegg i Excel som jeg bruker til mye rart. En av funksjonene er å erstatte den innebygde snarveien Shift+F11 (nytt ark) med en enkel kode som gjør at det nye arket alltid havner bakerst

Private Sub NyttArk()
Sheets.Add
Sheets(ActiveSheet.Name).Move After:=Sheets(Worksheets.Count)
End Sub

Problemet med dette er at jeg ofte lager et nytt ark etter at jeg har kopiert data som skal inn i dette arket, og når man kjører en makro da "glemmer" Excel det jeg har kopiert.

 

Jeg ser for meg at jeg endrer ovennevnte kode til noe lignende dette

Private Sub NyttArk()
If Not Application.CutCopyMode = False Then
   'Hvilke celler er kopiert
   Sheets.Add
   Sheets(ActiveSheet.Name).Move After:=Sheets(Worksheets.Count)
   'Kopier cellene på nytt
Else
   Sheets.Add
   Sheets(ActiveSheet.Name).Move After:=Sheets(Worksheets.Count)
End If
End Sub

Finnes det en metode for å se hva som er kopiert? En workaround kan være å hoppe tilbake til arket jeg var i, kopiere selection og så gå til det nye arket igjen, men det blir ikke en 100 %-løsning siden selection kan ha endret seg.

 

Edit: Norsk 2003

Endret av Bradbury
Lenke til kommentar
Videoannonse
Annonse

Takk, men nei. Problemet er ikke å finne ut hvordan jeg skal kopiere noe, problemet er å finne ut hva som allerede er kopiert. For å ta et lett eksempel.

 

I Ark1 kopierer jeg B5:C7, jeg oppretter så Ark2 for å lime inn verdiene der. Når jeg bruker makroen min for å opprette det nye arket, da er ikke B5:C7 lenger kopiert, så jeg må gå tilbake til Ark1 og kopiere disse på nytt før jeg så bytter til Ark2 og limer inn verdiene.

 

Det er jo åpenbart at det ikke er B5:C7 som kopieres hver gang, så da ligger utfordringen i å finne ut hvilket område, eller hvilke områder som var kopiert i det jeg startet makroen.

Lenke til kommentar

Hmm, jeg tror kanskje jeg har funnet en løsning.

 

Jeg bytter ut den vanlige kopieringsfunksjonen med følgende kode

 

Dim KopiertOmråde As Range
Sub Kopiere()
Set KopiertOmråde = Selection
Selection.Copy
End Sub

Koden for å lage nytt ark vil da se ca slik ut.

 

Private Sub NyttArk()
If Not Application.CutCopyMode = False Then
   Sheets.Add
   Sheets(ActiveSheet.Name).Move After:=Sheets(Worksheets.Count)
   KopiertOmråde.Copy
Else
   Sheets.Add
   Sheets(ActiveSheet.Name).Move After:=Sheets(Worksheets.Count)
End If
End Sub

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...