Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

[Løst] Makro i excel


Kjuppapa

Anbefalte innlegg

Hei

 

Jeg driver og ordner med et excel ark der jeg gjerne skulle ha fått flyttet radere automatisk over til nytt ark.

vet man kan bruke makro til dette men dette er noe jeg har lite viten om. er det noen som kan hjelpe.

 

jeg kunne ha tenkt meg det at ner jeg skriver ja i kollonen motatt så flyttes den raden automatisk over i et et annet ark som heter Mottatte deler og raden i det første arket slettes derifra. 

 

jeg må ha det inn med tskje så ver tolmodig når dere svarer :D

 

Geir

 

   

post-463521-0-17936000-1509100697_thumb.png

Lenke til kommentar
Videoannonse
Annonse

Hei Geir

 

Høyreklikk arkfanen Bestilte deler. Velg "View code" -eller "Vis kode" om det er på norsk.

 

Nå dukker et stort hvitt ark opp, en Modul på data'sk. Lim inn dette:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1).Column = 9 Then
If UCase(Target(1).Value) = "JA" Then
   Call KopierMeg(Target(1).Row)
End If
End If
End Sub


Private Sub KopierMeg(R As Long)
Dim RW As Long, C As Long
RW = Sheets("Mottatte deler").Cells(50000, 1).End(xlUp).Row + 1
For C = 1 To 15
Sheets("Mottatte deler").Cells(RW, C).Value = _
    Me.Cells(R, C).Value
Next
Me.Rows(R).Delete
End Sub

Så lukker du vinduet og går tilbake til Excel, og så skal det virke.

Dette avhenger at Ja skrives i I-kolonnen (kolonnenummer 9) og at destinasjonsarket heter "Mottatte deler". Hvis du endrer dette så må du også endre i denne koden. Men det finner du ut av om den tid kommer :)

 

Edit: PS du må lagre filen som Makroaktivert arbeidsbok filtype xlsm, eller gammelt format xls, ellers forsvinner programmeringskoden.

 

Beste hilsen Harald

Endret av Harald Staff
Lenke til kommentar

Hei Geir

 

Høyreklikk arkfanen Bestilte deler. Velg "View code" -eller "Vis kode" om det er på norsk.

 

Nå dukker et stort hvitt ark opp, en Modul på data'sk. Lim inn dette:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1).Column = 9 Then
If UCase(Target(1).Value) = "JA" Then
   Call KopierMeg(Target(1).Row)
End If
End If
End Sub


Private Sub KopierMeg(R As Long)
Dim RW As Long, C As Long
RW = Sheets("Mottatte deler").Cells(50000, 1).End(xlUp).Row + 1
For C = 1 To 15
Sheets("Mottatte deler").Cells(RW, C).Value = _
    Me.Cells(R, C).Value
Next
Me.Rows(R).Delete
End Sub

Så lukker du vinduet og går tilbake til Excel, og så skal det virke.

Dette avhenger at Ja skrives i I-kolonnen (kolonnenummer 9) og at destinasjonsarket heter "Mottatte deler". Hvis du endrer dette så må du også endre i denne koden. Men det finner du ut av om den tid kommer :)

 

Edit: PS du må lagre filen som Makroaktivert arbeidsbok filtype xlsm, eller gammelt format xls, ellers forsvinner programmeringskoden.

 

Beste hilsen Harald

hm det fikk jeg ikke til du gidt ble ikke noen endringer med det

Lenke til kommentar

Fant ut av det var bare en skrivefeil i koden din. men hvordan kan jeg gjøre det når jeg vil at den skal flyttes ved at jeg skriver inn en sporingsnr til posten. den er jo forskjellig fra pakke til pakke.

 

ser også at etter de er flyttet så legger de seg rart slik vist på bilde

  

 

 

Hei Geir

 

Høyreklikk arkfanen Bestilte deler. Velg "View code" -eller "Vis kode" om det er på norsk.

 

Nå dukker et stort hvitt ark opp, en Modul på data'sk. Lim inn dette:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1).Column = 9 Then
If UCase(Target(1).Value) = "JA" Then
   Call KopierMeg(Target(1).Row)
End If
End If
End Sub


Private Sub KopierMeg(R As Long)
Dim RW As Long, C As Long
RW = Sheets("Mottatte deler").Cells(50000, 1).End(xlUp).Row + 1
For C = 1 To 15
Sheets("Mottatte deler").Cells(RW, C).Value = _
    Me.Cells(R, C).Value
Next
Me.Rows(R).Delete
End Sub

Så lukker du vinduet og går tilbake til Excel, og så skal det virke.

Dette avhenger at Ja skrives i I-kolonnen (kolonnenummer 9) og at destinasjonsarket heter "Mottatte deler". Hvis du endrer dette så må du også endre i denne koden. Men det finner du ut av om den tid kommer :)

 

Edit: PS du må lagre filen som Makroaktivert arbeidsbok filtype xlsm, eller gammelt format xls, ellers forsvinner programmeringskoden.

 

Beste hilsen Harald

hm det fikk jeg ikke til du gidt ble ikke noen endringer med det

 

 

post-463521-0-97148600-1509109200_thumb.png

Endret av Kjuppapa
Lenke til kommentar

RW = Sheets("Mottatte deler").Cells(50000, 1).End(xlUp).Row + 1

måtte endre denne til bestilte deler så funket det

 

 

 

Fant ut av det var bare en skrivefeil i koden din.

Hva var skrivefeilen? Fungerte helt fint her i hvert fall, uten noen endringer i Haralds kode.

 

Lenke til kommentar

Hei igjen Geir

 

Linjen du har "rettet" fant første ledige rad under det siste som står i A-kolonnen i arket Mottatte deler. Rettelsen din lager ikke bare hulter til bulter, du risikerer å overskrive eksisterende linjer. Rett tilbake.

 

Problemet er antakelig at du har noe skrot langt nede utenfor syne i kolonne A i det arket. Det kan være noe så uskyldig en celle som inneholder bare et usynlig mellomrom. Radene du ikke fant står nok under det. Du finner slutten av et ark med Ctrl End, og du leter opp og ned kolonner med End og så pil opp eller pil ned. Slett radene med skrot så virker koden.

 

Beste hilsen Harald

Endret av Harald Staff
Lenke til kommentar

dette funket en stund men når jeg nå flyttet over med orginalkoden du sendte så legger denalt på 1 rad og sletter det som har stått

 

Hei igjen Geir

 

Linjen du har "rettet" fant første ledige rad under det siste som står i A-kolonnen i arket Mottatte deler. Rettelsen din lager ikke bare hulter til bulter, du risikerer å overskrive eksisterende linjer. Rett tilbake.

 

Problemet er antakelig at du har noe skrot langt nede utenfor syne i kolonne A i det arket. Det kan være noe så uskyldig en celle som inneholder bare et usynlig mellomrom. Radene du ikke fant står nok under det. Du finner slutten av et ark med Ctrl End, og du leter opp og ned kolonner med End og så pil opp eller pil ned. Slett radene med skrot så virker koden.

 

Beste hilsen Harald

Lenke til kommentar

nå ser det ut som at det funker jeg må vist legge noe inn i første celle på hver rad skal det funke og da kommer det an på om han blir glad hvis det står samme dato 

 

 

dette funket en stund men når jeg nå flyttet over med orginalkoden du sendte så legger denalt på 1 rad og sletter det som har stått

 

Hei igjen Geir

 

Linjen du har "rettet" fant første ledige rad under det siste som står i A-kolonnen i arket Mottatte deler. Rettelsen din lager ikke bare hulter til bulter, du risikerer å overskrive eksisterende linjer. Rett tilbake.

 

Problemet er antakelig at du har noe skrot langt nede utenfor syne i kolonne A i det arket. Det kan være noe så uskyldig en celle som inneholder bare et usynlig mellomrom. Radene du ikke fant står nok under det. Du finner slutten av et ark med Ctrl End, og du leter opp og ned kolonner med End og så pil opp eller pil ned. Slett radene med skrot så virker koden.

 

Beste hilsen Harald

 

Lenke til kommentar

Hei igjen

 

Jeg ser du har satt denne til Løst. Men for arkivets skyld, her er en modifisert KopierMeg som ikke er avhengig av en bestemt utfylt kolonne:

Private Sub KopierMeg(R As Long)
Dim RW As Long, C As Long
Dim RL As Long
For C = 1 To Sheets("Mottatte deler").UsedRange.Columns.Count
    RL = Sheets("Mottatte deler").Cells(50000, C).End(xlUp).Row + 1
    If RL > RW Then RW = RL
Next
For C = 1 To 15
Sheets("Mottatte deler").Cells(RW, C).Value = _
    Me.Cells(R, C).Value
Next
Me.Rows(R).Delete
End Sub

Beste hilsen Harald

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å
×
×
  • Opprett ny...