Avatar billede KenneyD71 Nybegynder
06. marts 2014 - 09:46 Der er 5 kommentarer og
1 løsning

Makro: Kopier fra celle, til slutning af række og sæt ind i slutning af række ovenover

Jeg har 2 rækker.
Jeg står i celle xx.
til højre for denne celle står der en masse data.
Disse skal sættes ind i slutning af rækken ovenfor og derefter gå tilbage til celle xx.

jeg har prøvet at lave en makro, men den sætter dem ind i samme række.
Avatar billede Sitestory Mester
06. marts 2014 - 16:27 #1
Lige et par opklarende spørgsmål:

Hvad mener du mere præcist med, at de skal sættes ind i slutning af rækken ovenfor?
Skal det kopieres til den første celle uden indhold, eller skal det sættes ind, så det står helt til højre i rækken?
Skal det kopieres eller flyttes?
Har xx en særlig position i forhold til data i rækken ovenfor, eller kan det variere?
Er der tomme celler imellem de celler, som skal kopieres/flyttes?
Avatar billede KenneyD71 Nybegynder
06. marts 2014 - 16:34 #2
Jeg ønsker at de sættes ind i rækken overfør i første celle uden indhold.
De skal flyttes.
Celle XX kan ikke variere.
Der er ingen tommer celler der skal flyttes.

En lille supplerende detalje:
Både rækken der skal klippes fra og sættes ind i kan nogle gange bestå af 1 celle.
Avatar billede Sitestory Mester
06. marts 2014 - 17:30 #3
Prøv om ikke dette virker:

Sub Flyt()
Dim rHjem As Range
Dim rFra As Range
Dim rTil As Range

On Error GoTo Fejl

'Hvis cellen til højre for udgangscellen er tom
If IsEmpty(ActiveCell.Offset(0, 1)) Then
  MsgBox "Ingen data at flytte"
  GoTo Slut
End If

'rHjem sættes = udgangscellen
Set rHjem = ActiveCell

'rFra sættes = cellen til højre
Set rFra = rHjem.Offset(0, 1)

'Hvis cellen to kolonner fra udgangscellen
'har et indhold, udvides rFra til sidste
'celle med indhold mod højre.
If Len(rFra.Offset(0, 1).Value) > 0 Then
  Set rFra = Range(rFra, rFra.End(xlToRight))
End If

'rTil sættes = cellen over udgangscellen
Set rTil = rHjem.Offset(-1, 0)

'Hvis denne har et indhold
If Len(rTil.Value) > 0 Then
  'Hvis cellen til højre herfor har et
  'indhold, findes sidste celle mod højre
  'med indhold.
  If Len(rTil.Offset(0, 1).Value) > 0 Then
      'rTil sættes til denne celle
      Set rTil = rTil.End(xlToRight)
      'Hvis det er arkets sidste kolonne
      If rTil.Column <> Columns.Count Then
        MsgBox "Der er ikke plads til at sætte ind"
        GoTo Slut
      Else
        'Ellers sætte rTil til cellen til højre
        Set rTil = rTil.Offset(0, 1)
      End If
  Else
      Set rTil = rTil.Offset(0, 1)
  End If
Else
  'Hvis cellen over udgangscellen er tom
  'søges først mod højre efter en celle
  'med indhold.
  Set rTil = rTil.End(xlToRight)
  'Hvis der er en celle med indhold, og det ikke er
  'sidste kolonne, sættes rTil = cellen til højre.
  If Len(rTil.Value) > 0 And rTil.Column < Columns.Count Then
      Set rTil = rTil.Offset(0, 1)
  Else
      'Ellers sættes rTil = første celle til vanstre
      'med indhold. Hvis der er en celle med indhold,
      'sættes rTil = cellen til højre herfor.
      'Har den ikke et indhold, er vi havnet i kolonne A.
      Set rTil = rTil.End(xlToLeft)
      If Len(rTil.Value) > 0 Then Set rTil = rTil.Offset(0, 1)
  End If
End If

'Data flyttes
rFra.Cut rTil
'Udgangscellen aktiveres
rHjem.Activate

Slut:
Set rHjem = Nothing
Set rFra = Nothing
Set rTil = Nothing
Exit Sub
Fejl:
MsgBox Err.Description & " Procedure Flyt"
Resume Slut
End Sub
Avatar billede Sitestory Mester
06. marts 2014 - 17:42 #4
Rettelse:

  'Hvis der er en celle med indhold, og det ikke er
  'sidste kolonne, sættes rTil = cellen til højre.
  If Len(rTil.Value) > 0 And rTil.Column < Columns.Count Then
      Set rTil = rTil.Offset(0, 1)


skal udvides til:


  'Hvis der er en celle med indhold, og det ikke er
  'sidste kolonne, sættes rTil = cellen til højre.
  If Len(rTil.Value) > 0 And rTil.Column < Columns.Count Then
      If Len(rTil.Offset(0, 1).Value) > 0 Then
        Set rTil = rTil.End(xlToRight).Offset(0, 1)
      Else
        Set rTil = rTil.Offset(0, 1)
      End If


Sorry!
Avatar billede KenneyD71 Nybegynder
23. marts 2014 - 11:08 #5
Tak skal du have Sitestory.
Giv et svar og få dine point.
Avatar billede Sitestory Mester
23. marts 2014 - 11:17 #6
Velbekom :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester