Just nu i M3-nätverket
Gå till innehåll
Sursill

LÖST Flytta rad med vb i excel

Rekommendera Poster

Hej, 

Jag behöver hjälp med en kod visual basic i excel. Det jag vill att macrot ska göra är att klippa ut en rad i blad 1 (tomraden ska deletas) och klistra in den i blad 2 på första lediga rad. 

Tacksam för hjälp

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
    Dim rnSource As Range
    Dim rnTarget As Range
    Set rnSource = Blad1.Rows(3)
    Set rnTarget = Blad2.Cells(1, 1).End(xlDown).Offset(1)
    rnSource.EntireRow.Copy rnTarget
    rnSource.EntireRow.Delete Shift:=xlUp

Hur man hittar första tomma rad beror lite på hur dina data ser ut. I detta fall finns det värden i A1 och nedåt, kontinuerligt.

xlDown är samma som CTRL+pil ned på tangentbordet.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Tack!

Värden finns i A1 kontinuerligt. Jag provade koden, men den fastnar på raden:     Set rnTarget = Blad2.Cells(1, 1).End(xlDown).Offset(1).

 

Sub flyttarad()
  Dim rnSource As Range
    Dim rnTarget As Range
    Set rnSource = Blad1.Rows(3)
    Set rnTarget = Blad2.Cells(1, 1).End(xlDown).Offset(1)
    rnSource.EntireRow.Copy rnTarget
    rnSource.EntireRow.Delete Shift:=xlUp
End Sub

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Blad1 är namnet, VBA-namnet på bladet du hämtar data på. Blad2 är VBA-namnet på målbladet.

Denna referens kan du bygga upp på fler sätt:

Set rnSource = Worksheets("MittBladNamn").Rows(3)

exempelvis.

Troligtvis det som den fastnat på.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

För enkelhetens skull har jag bara ett test-ark med kolumn A ifylld med en sifferserie på Blad1. Blad2 är tom. 

 

Så här blir det när jag testar koden:

 

image.png.a729330f572fa92f80a4dfc67d930a74.png

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Om blad2 är tomt hamnar vi på rad 1048576 och nedanför den finns det givetvis inte en till så skriv in en första rad, en rubrik, och det kommer att fungera.

Men vi kan vända på det:
 

Set rnTarget = Blad2.Cells(1048576 , 1).End(xlUp).Offset(1)
If (Not rnTarget .Value = "") Then
  Set rnTarget = rnTarget .Offset(1)
End If

Fast rad 1048576 finns inte äldre version av excel så kanske minska den siffran som inte alla som ska använda arket har nya versionen av Excel.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Tack för hjälpen. Men det funkar inte ändå, vilket gör mig sömnlös. Jag har två koder som fungerar klockrent var och en för sig. För att hitta nästa tomma rad (förutom msgbox): 

Sub LastFreeRow()

    Dim LastRow As Long
    With ActiveSheet
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
    End With
    MsgBox LastRow
End Sub

 

Samt Cut & Paste: 

 

Sub Flyttarad()

    Selection.Cut
    Sheets("Blad2").Select
    Rows("1:1").Select
    ActiveSheet.Paste
    Sheets("Blad1").Select
    Selection.Delete Shift:=xlUp
    Range("I21").Select
End Sub
 

 

 

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Se bifogad bok

Zippad eftersom den innehåller VBA-kod och Eforum nekar uppladdning av de filerna.

Se om du förstår hur denna fungerar och anpassa den efter dina behov.  det som behövs är kanske framförallt att hitta raden som ska flyttas. Kan göra om koden så att den frågar efter en rad, att en cell i den ska markeras.

 

flyttarad.zip

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Hejsan!

Det blev ändå lite fel. Men jag ändrade till   "Set rnSource = Selection" istället för "Set rnSource = Blad1.Rows(3)" Så nu verkar koden funka helt. 

Tack för att du ledde mig på rätt spår. 

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...