Just nu i M3-nätverket
Jump to content

Flytta rad med vb i excel


Sursill
 Share

Go to solution Solved by Monshi,

Recommended Posts

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

 

Link to comment
Share on other sites

    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.

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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
 

 

 

 

 

Link to comment
Share on other sites

  • Solution

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

Link to comment
Share on other sites

  • 2 weeks later...

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. 

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share



×
×
  • Create New...