Avatar billede h_s Forsker
12. februar 2005 - 12:41 Der 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.
Avatar billede bak Forsker
12. februar 2005 - 19:17 #1
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 - 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

Jump:
Avatar billede h_s Forsker
16. februar 2005 - 18:13 #2
Bak det virker fint, men når B4 IKKE er tom får jeg følgende fejl:

Application-defined or object-defined error

i følgende linje:

If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel

Hvorfor det?
Avatar billede h_s Forsker
16. februar 2005 - 18:16 #3
... formlen kommer ikke i cellen("K" & Aktiv række)
Avatar billede bak Forsker
16. februar 2005 - 20:52 #4
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.
Avatar billede bak Forsker
16. februar 2005 - 20:59 #5
ville nok have skrevet således

Sub test()


    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
    Next

Jump:

End Sub
Avatar billede h_s Forsker
19. februar 2005 - 09:08 #6
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
Avatar billede bak Forsker
19. februar 2005 - 12:42 #7
Næh, det burde virke.
Send mig hellere arket
excel@tbdl.dk
Avatar billede h_s Forsker
24. februar 2005 - 18:39 #8
Er sendt!
Avatar billede h_s Forsker
06. marts 2005 - 19:13 #9
Har du glemt mig? :-)
Avatar billede h_s Forsker
28. april 2005 - 22:49 #10
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!
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