Hej Koppla en knapp till FixLastRow nedan Kalas! Spela in koden så ser du hur det görsExcel knapp
Jag funderar om det finns möjlighet att göra en knapp i en arbetsbok som skapar en ny rad på nästa lediga position längst ner i listan, samt att den formaterar raden enligt krav.
Någon som kan detta?Sv: Excel knapp
så färgas nästa tomma rad när du trycker på knappen
Sub FixLastRow()
Dim LastRow As Long
Dim LastCol As Long
' Hämtar sista cell som har eller har haft ett värde
LastRow = Sheets(ActiveSheet.Name).Cells(1, 1).SpecialCells(xlLastCell).Row ' hämtar rad nr
LastCol = Sheets(ActiveSheet.Name).Cells(1, 1).SpecialCells(xlLastCell).Column ' hämtar kolumn nr
' Anropar en funktion som loopar från sista rad uppåt för att hitta sista rad med något värde
LastRow = CHECKLASTROW(ActiveSheet.Name, 1, LastRow, LastCol)
' Formatera raden här
With ActiveSheet.Rows(LastRow + 1)
.Interior.ColorIndex = 34
End With
End Sub
Function CHECKLASTROW(SheetName As String, FirstRow As Long, LastRow As Long, LastCol As Long) As Long
Dim tmpLastRow As Long
Dim inx As Long
Dim inx2 As Long
Dim LastCell As Boolean
CHECKLASTROW = 1
For inx = LastRow To FirstRow Step -1
For inx2 = 1 To LastCol
If Worksheets(SheetName).Cells(inx, inx2).Value <> "" Then
tmpLastRow = inx
LastCell = True
Exit For
End If
Next
If LastCell Then Exit For
Next
CHECKLASTROW = tmpLastRow
End Function
Sv:Excel knapp
Dock undrar jag om det finns möjlighet att den skall kunna hämta formaten från den föregående raden också, ungefär som man kan använda 'Hämta format' (penseln).Sv: Excel knapp
Markera den rad du vill hämta formatet ifrån
och välj sen klistra in special / format
Sub FixLastRow()
Dim LastRow As Long
Dim LastCol As Long
' Hämtar sista cell som har eller har haft ett värde
LastRow = Sheets(ActiveSheet.Name).Cells(1, 1).SpecialCells(xlLastCell).Row ' hämtar rad nr
LastCol = Sheets(ActiveSheet.Name).Cells(1, 1).SpecialCells(xlLastCell).Column ' hämtar kolumn nr
' Anropar en funktion som loopar från sista rad uppåt för att hitta sista rad med något värde
LastRow = CHECKLASTROW(ActiveSheet.Name, 1, LastRow, LastCol)
' Formatera raden här
ActiveSheet.Rows(LastRow).Copy
ActiveSheet.Rows(LastRow + 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Function CHECKLASTROW(SheetName As String, FirstRow As Long, LastRow As Long, LastCol As Long) As Long
Dim tmpLastRow As Long
Dim inx As Long
Dim inx2 As Long
Dim LastCell As Boolean
CHECKLASTROW = 1
For inx = LastRow To FirstRow Step -1
For inx2 = 1 To LastCol
If Worksheets(SheetName).Cells(inx, inx2).Value <> "" Then
tmpLastRow = inx
LastCell = True
Exit For
End If
Next
If LastCell Then Exit For
Next
CHECKLASTROW = tmpLastRow
End Function