Avatar billede HHA Guru
23. februar 2022 - 10:16 Der er 6 kommentarer og
1 løsning

VBA blokering mod sletning

Hejsa,

Jeg vil gerne lave en blokering mod at slette rækker uden for et område.
Det virker fint opad, med dette: If Selection.Rows.Count = 1 And r > 4 Then

Men jeg har så nogle rækker der bliver slettet og nye indsat, så de rækker som jeg gerne vil have beskyttet mod sletning varierer.
Hvis jeg nu i kolonne A har skrevet MIS i cellerne i de rækker der ikke må slettes, hvad skal jeg så tilføje i nedenstående for at lave en blokering?
Har søgt på nettet, men er i tvivl om hvad jeg skal søge efter og syntes det jeg finder ikke passer ind i det jeg mangler.

Sub Slet_markeret_række()
'

Application.ScreenUpdating = False

    Sheets("Ressourcer motor").Unprotect "1123"
    Sheets("Stål afdeling").Unprotect "1123"
    Sheets("Maler afdeling").Unprotect "1123"
Worksheets("Ressourcer Motor").Select
r = Selection.Row

If Selection.Rows.Count = 1 And r > 4 Then
Selection.EntireRow.Delete
Worksheets("Stål afdeling").Rows(r).EntireRow.Delete
Worksheets("Maler afdeling").Rows(r).EntireRow.Delete
Else
MsgBox ("Marker kun en linje ad gangen til sletning")
End If

Sheets("Ressourcer motor").Protect
Sheets("Stål afdeling").Protect "1123"
Sheets("Maler afdeling").Protect "1123"
Application.ScreenUpdating = True

End Sub
Avatar billede Jan K Ekspert
23. februar 2022 - 11:09 #1
Måske noget i stil med (ikke testet)

Indsæt inden dit Then
And If Range("A"&;r),Value <> "MIS"
Avatar billede HHA Guru
23. februar 2022 - 14:41 #2
Det syntes ikke at virke.
Koden endte med at blive som nedenstående, inden den ville godtage indtastning af koden.
Men om det så gør at den ikke virker ved jeg ikke.
Men den tager stadigvæk linjer med MIS i kolonne A

If Selection.Rows.Count = 1 And r > 4 Or Range("A" & r).Value = "MIS" Then
Avatar billede HHA Guru
23. februar 2022 - 14:42 #3
Fejl i ovenstående, det er selvfølgelig ikke =, men den er sådan er:
If Selection.Rows.Count = 1 And r > 4 Or Range("A" & r).Value <> "MIS" Then
Avatar billede HHA Guru
23. februar 2022 - 14:52 #4
og det virker alligevel ikke.
Avatar billede Jan K Ekspert
23. februar 2022 - 18:10 #5
Har pt kun adgang til Excel på min telefon, og der kan jeg ikkd bruge VBA, så jeg kan desværre ikke teste.
Avatar billede store-morten Ekspert
24. februar 2022 - 20:11 #6
Prøv:
Sub Slet_markeret_række()

Application.ScreenUpdating = False

    Sheets("Ressourcer motor").Unprotect "1123"
    Sheets("Stål afdeling").Unprotect "1123"
    Sheets("Maler afdeling").Unprotect "1123"
Worksheets("Ressourcer Motor").Select

r = Selection.Row

If Selection.Rows.Count = 1 And r > 4 Then

  If Range("A" & r).Value = "MIS" Then
    MsgBox ("Denne markerede linje må ikke slettes")
    GoTo FørAfslut
    End If


Selection.EntireRow.Delete
Worksheets("Stål afdeling").Rows(r).EntireRow.Delete
Worksheets("Maler afdeling").Rows(r).EntireRow.Delete
Else
MsgBox ("Marker kun en linje ad gangen til sletning")
End If

FørAfslut:

Sheets("Ressourcer motor").Protect
Sheets("Stål afdeling").Protect "1123"
Sheets("Maler afdeling").Protect "1123"
Application.ScreenUpdating = True

End Sub
Avatar billede HHA Guru
25. februar 2022 - 09:55 #7
store-morten takker 👍

Troede ikke man kunne have flere If efter hinanden.
Men dejligt, så lærte jeg lige lidt mere.
Det virker lige som det skal.
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