Avatar billede tida Juniormester
22. marts 2022 - 09:38 Der er 18 kommentarer og
1 løsning

Slette variable række antal i mange faner

Hej

Jeg har en arbejdsfil med mange formler og faner. Når jeg er færdig med arbejdsfilen, skal den distribueres og gemmes på ny sti uden formler. Derudover har jeg behov for en VBA kode der gennemgår de enkelte faner og sletter nogle forud fastdefinerede og individuelle rækker der indeholder nogle beregninger der ikke skal udstilles til modtageren.

Arealet på disse rækker findes både på de enkelte faner, men også på en forside fane hvor man måske med fordel kunne hente det i VBA'en - jeg kan ikke vurdere hvad der er smartest og hurtigts.

Kan nogle hjælpe mig med denne makro, jeg har selv forsøgt med dette :

For Each sh In Worksheets
    Rw = Range("A3")
    sh.Rows(Rw).EntireRow.Delete
    Range("A1").Select
    Next sh


men kan ikke få det helt i mål, idet den benytter ranget i A3 på samtlige faner og det er ikke meningen.

Sig endelig til hvis der er noget der er uklart.

Mvh/Tida
Avatar billede store-morten Ekspert
22. marts 2022 - 10:45 #1
Prøv, hvis variablerne står på de enkelte faner i A3:

For Each sh In Worksheets
    Rw = sh.Range("A3")
    sh.Rows(Rw).EntireRow.Delete
    Range("A1").Select
    Next sh
Avatar billede tida Juniormester
22. marts 2022 - 12:08 #2
Tak for svar :-)

Den kan ikke lide den miderste linie i koden, "sh.Rows(Rw).EntireRow.Delete" der fejler den ?

For Each sh In Worksheets
    Rw = sh.Range("A3")
    sh.Rows(Rw).EntireRow.Delete
    Range("A1").Select
    Next sh
Avatar billede store-morten Ekspert
22. marts 2022 - 17:02 #3
Hvad står der i A3?
Avatar billede store-morten Ekspert
22. marts 2022 - 19:37 #4
Du kan skrive et tal i A3 for en række der skal slettes eller
formater celle A3 som "Tekst" og skriv 5:7 for at slette række 5, 6 og 7
Avatar billede tida Juniormester
23. marts 2022 - 08:21 #5
Der står et række interval - der er i alt 85 faner med hvert sit række interval i celle A3.
F.eks    40:500
Avatar billede store-morten Ekspert
23. marts 2022 - 08:34 #6
Er der tomme A3 celler?
Avatar billede tida Juniormester
23. marts 2022 - 08:47 #7
Ja det kan godt forekomme, og i så fald skal den bare springe den over.
Avatar billede store-morten Ekspert
23. marts 2022 - 08:59 #8
For Each sh In Worksheets
    Rw = sh.Range("A3")
   
If Rw = 0 Then GoTo Fortsæt

    sh.Rows(Rw).EntireRow.Delete
    Range("A1").Select
   
Fortsæt:
    Next sh
Avatar billede tida Juniormester
23. marts 2022 - 10:06 #9
Hej igen

Nu fejler den i denne her linje, og jeg har også prøvet at indsætte "" for blank, og det giver samme fejl  :

If Rw = 0 Then GoTo Fortsæt
Avatar billede store-morten Ekspert
23. marts 2022 - 10:29 #10
Hvilken fejl?

Er der tekst i A3?
Avatar billede tida Juniormester
23. marts 2022 - 13:24 #11
Nej ingen tekst - blank eller række antal
Avatar billede store-morten Ekspert
23. marts 2022 - 13:51 #12
Hvilken fejl?
Avatar billede store-morten Ekspert
24. marts 2022 - 07:52 #13
Prøv:
On Error GoTo Fejl

For Each sh In Worksheets
    sh.Select
    Rw = sh.Range("A3")
 
If IsEmpty(Rw) Then GoTo Fortsæt

    sh.Rows(Rw).EntireRow.Delete
    sh.Range("A1").Activate
 
Fortsæt:
    Next sh
   
Exit Sub
   
Fejl:
    MsgBox "Fejl celles indhold: " & vbCrLf _
    & vbCrLf & Rw & vbCrLf _
    & vbCrLf & "Fanen springes over!"
    GoTo Fortsæt
Avatar billede tida Juniormester
24. marts 2022 - 08:43 #14
Tak for tilsendte, det ser ud til at fungere :-) Jeg har dog nogle efterfølgende steps i makroen som skal udføres, men makroen stopper efter din kode, hvordan får jeg den til at fortsætte med mit næste step hvor den skal fjerne de 3 øverste rækker i samtlige ark :

    On Error GoTo Fejl

For Each sh In Worksheets
    sh.Select
    Rw = sh.Range("A3")

If IsEmpty(Rw) Then GoTo Fortsæt

    sh.Rows(Rw).EntireRow.Delete
    sh.Range("A1").Activate

Fortsæt:
    Next sh
 
Exit Sub
 
Fejl:
    MsgBox "Fejl celles indhold: " & vbCrLf _
    & vbCrLf & Rw & vbCrLf _
    & vbCrLf & "Fanen springes over!"
    GoTo Fortsæt
   
   
      'Fjerner række 1 til 3 i alle ark
     

    For Each sh In Worksheets
    Range("A1").Select
    sh.Rows("1:3").EntireRow.Delete
    Next sh
Avatar billede tida Juniormester
24. marts 2022 - 08:44 #15
Tænker at det er den der "Exit Sub" der måske skal hedde noget andet.
Avatar billede store-morten Ekspert
24. marts 2022 - 09:38 #16
Prøv:
On Error GoTo Fejl

For Each sh In Worksheets
    sh.Select
    Rw = sh.Range("A3")

If IsEmpty(Rw) Then GoTo Fortsæt

    sh.Rows(Rw).EntireRow.Delete
  sh.Rows("1:3").EntireRow.Delete
    sh.Range("A1").Activate

Fortsæt:
    Next sh
 
Exit Sub
 
Fejl:
    MsgBox "Fejl celles indhold: " & vbCrLf _
    & vbCrLf & Rw & vbCrLf _
    & vbCrLf & "Fanen springes over!"
    GoTo Fortsæt
Avatar billede store-morten Ekspert
24. marts 2022 - 09:45 #17
#15 Vi kan jo sende den til slutningen af koden :-)
On Error GoTo Fejl

For Each sh In Worksheets
    sh.Select
    Rw = sh.Range("A3")

If IsEmpty(Rw) Then GoTo Fortsæt

    sh.Rows(Rw).EntireRow.Delete
    sh.Rows("1:3").EntireRow.Delete
    sh.Range("A1").Activate

Fortsæt:
    Next sh
GoTo Slut
 
Fejl:
    MsgBox "Fejl celles indhold: " & vbCrLf _
    & vbCrLf & Rw & vbCrLf _
    & vbCrLf & "Fanen springes over!"
    GoTo Fortsæt
 
Slut:
Avatar billede tida Juniormester
24. marts 2022 - 10:40 #18
Det er bare Perfekt - Tusind tak :-)
Avatar billede store-morten Ekspert
24. marts 2022 - 10:46 #19
Velbekomme 🤠
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

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