12. februar 2005 - 12:41Der er
9 kommentarer og 1 løsning
Ændring af makro
Her er starten af en makro:
r = Range("B65536").End(xlUp).Row 'finder sidste række i B kolonnen If r < 6 Then r = 6 ' ny linie Range("B" & r - 1).Select ActiveCell.EntireRow.Insert Shift:=xlDown ' indsætter række lige over sidste række Range("B" & r - 1).Select For I = 1 To 10 ' ret her for flere kolonner 10 = k If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel ActiveCell.Offset(-1, I).AutoFill _ Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _ , Type:=xlFillDefault ' hvis overstående celler har en formel trækkes den ned, 'Fra A kolonnen og 10 kolonner til højre End If Next
'Indsætter dags dato i nye række i kolonne B Range("B" & ActiveCell.Row) = Date
Det den gør er, at indsætte en række efter tidligst efter række 4 ellers der hvor der under den sidste række hvor der står noget i kolonne B.
Mit problem er, at når jeg ikke har noget stående i række 4, så indsættes en række alligevel. Jeg vil gerne have makroen til at se om der står noget i celle B4. Hvis der ikke gør det skal den springe denne del af makroen over og gå til den sidste del, som ikke er vist her.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
r = Range("B65536").End(xlUp).Row 'finder sidste række i B kolonnen If r < 6 Then r = 6 ' ny linie Range("B" & r - 1).Select ActiveCell.EntireRow.Insert Shift:=xlDown ' indsætter række lige over sidste række Range("B" & r - 1).Select For I = 1 To 10 ' ret her for flere kolonner 10 = k If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel ActiveCell.Offset(-1, I).AutoFill _ Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _ , Type:=xlFillDefault ' hvis overstående celler har en formel trækkes den ned, 'Fra A kolonnen og 10 kolonner til højre End If Next
Ved ikke hvad den fejler hos dig, men jeg kan ikke få den til at fejle med 3 udfyldte række. Du skal dog være opmærksom på at den ikke indsætter en række over sidste, men derimod over 2. sidste. Det vil sige at hvis kun række 5 og 6 er udfydte indsættes en række over første række.
r = Range("B65536").End(xlUp).Row 'finder sidste række i B kolonnen If r < 6 Then r = 6 ' ny linie Range("B" & r).Select ActiveCell.EntireRow.Insert Shift:=xlDown ' indsætter række lige over sidste række 'Range("B" & r - 1).Select For I = 1 To 10 ' ret her for flere kolonner 10 = k If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel ActiveCell.Offset(-1, I).AutoFill _ Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _ , Type:=xlFillDefault ' hvis overstående celler har en formel trækkes den ned, 'Fra A kolonnen og 10 kolonner til højre End If Next
bak jeg får stadig samme fejl. Her er hele makroen. Håber du kan se hvad der er galt:
If IsEmpty(Range("B4")) Then GoTo Jump
r = Range("B65536").End(xlUp).Row 'finder sidste række i B kolonnen If r < 6 Then r = 6 ' ny linie Range("B" & r).Select ActiveCell.EntireRow.Insert Shift:=xlDown ' indsætter række lige over sidste række 'Range("B" & r - 1).Select For I = 1 To 10 ' ret her for flere kolonner 10 = k If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel ActiveCell.Offset(-1, I).AutoFill _ Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _ , Type:=xlFillDefault ' hvis overstående celler har en formel trækkes den ned, 'Fra A kolonnen og 10 kolonner til højre End If
'Indsætter dags dato i nye række i kolonne B Range("B" & ActiveCell.Row) = Date
'Hvis Godtgørelse indsættes tbKM i aktive række i kolonne F 'ellers indsættes tbKM i aktive række i kolonne G If obGodtgørelse = True Then Range("F" & ActiveCell.Row) = tbKM.Value Else If obBefordring = True Then Range("G" & ActiveCell.Row) = tbKM.Value End If
'Indsætter tbFra i Aktive kolonne C Range("C" & ActiveCell.Row) = tbFra.Text 'Indsætter tbTil i Aktive kolonne E Range("E" & ActiveCell.Row) = tbTil.Text 'Indsætter tbVia i Aktive kolonne D Range("D" & ActiveCell.Row) = tbVia.Text 'Indsætter tbFormål i Aktive kolonne H Range("H" & ActiveCell.Row) = tbFormål.Text 'Indsætter tbPassager i Aktive kolonne I Range("I" & ActiveCell.Row) = tbPassager.Text
'Sætter markøren i A1 Range("A1").Select 'Lukker ufKørsel Unload Me Next Stop
Jump: 'Indsætter dags dato i B4 Range("B4") = Date 'Indsætter tbFra i C4 Range("C4") = tbFra.Text 'Indsætter tbTil i E4 Range("E4") = tbTil.Text 'Indsætter tbVia i D4 Range("D4") = tbVia.Text 'Indsætter tbFormål i H4 Range("H4") = tbFormål.Text 'Indsætter tbPassager i I4 Range("I4") = tbPassager.Text 'Hvis Godtgørelse indsættes tbKM i kolonne F4 'ellers indsættes tbKM i aktive række i kolonne G If obGodtgørelse = True Then Range("F4") = tbKM.Value Else If obBefordring = True Then Range("G4") = tbKM.Value End If
'Sætter markøren i A1 Range("A1").Select 'Lukker ufKørsel Unload Me 'Next End Sub
Nu har den stået åben i næsten 2 måneder uden at Bak har lagt et svar, hvorfor jeg lukker spørgsmålet ved at ligge et svar selv. Hvis Bak vil have sine 30 point, så må han kontakte mig!
Synes godt om
Ny brugerNybegynder
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.