Opgelost Eerste 7 rijen mogen niet verwijderd kunnen worden

  • Onderwerp starter Onderwerp starter KeBr
  • Startdatum Startdatum
Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

KeBr

Gebruiker
Lid geworden
25 apr 2016
Berichten
183
Beste,

Ik heb onderstaande macro gevonden, deze werkt met een inputbox. echter hiermee kunne alle rijen verwijderd worden.
Hoe moet ik deze aanpassen zodat de eerste (in mijn geval 7) rijen niet verwijderd kunnen worden?

TheseRows = Application.InputBox("Welke rij(en) wil je verwijderen?" & vbNewLine & "Denk eraan dat alleen aansluitende rijen geslecteerd kunnen worden op deze manier aangegeven '5:10' anders wordt er niets verwijderd")
On Error Resume Next

If Len(TheseRows) > 0 Then Rows(TheseRows).EntireRow.Delete: Exit Sub
If Error.Number <> 0 Then On Error GoTo 0
 
Je gebruikt wel een foutgevoelige methode om rijen te verwijderen, maar vooruit:
Code:
    If Split(TheseRows, ":")(0) < 8 Then
        MsgBox "Rijen 1 t/m 7 mogen niet verwijderd worden"
    End If
 
Bedankt voor je reactie,

Ik krijg nu inderdaad de Msgbox met de melding. Echter als ik dan ook klik wordt alsnog de aangegeven rij verwijderd.

Je geeft aan dat het een foutgevoelige methode is. Indien je een betere methode weet, waarbij ook meerdere rijen op basis ingave verwijderd kunne worden, dan hoor ik dat graag.
 
Na de waarschuwing moet je natuurlijk wel het Deleten achterwege laten!

En met wat foutcontroles zou dat zo kunnen, je kunt het zo uitgebreid maken als je zelf wilt:
Code:
If TestInput(theserows) Then
    Rows(theserows).EntireRow.Delete
End If

Function TestInput(theserows)
    If Len(theserows) = 0 Then
        MsgBox "Geen range opgegeven"
    End If
    If InStr(theserows, ":") = 0 Then
        MsgBox "Geen : gevonden"
        Exit Function
    End If
    If Not IsNumeric(Split(theserows, ":")(0)) Then
        MsgBox "Eerste rijnummer is geen getal"
        Exit Function
    End If
    If Not IsNumeric(Split(theserows, ":")(1)) Then
        MsgBox "Tweede rijnummer is geen getal"
        Exit Function
    End If
    If Split(theserows, ":")(0) < 8 Then
        MsgBox "Rijen 1 t/m 7 mogen niet verwijderd worden"
        Exit Function
    End If
    TestInput = True
End Function
 
Code:
Sub hsv()
Dim c As Range
On Error Resume Next
 Set c = Application.InputBox("selecteer wat cellen of rijen", , , , , , , 8)
  If c.Cells(1).Row > 7 Then c.EntireRow.Delete
End Sub
 
Dank voor jullie reacties,

Met de oplossing van HSV is het voor mij de beste manier om toe te passen. werkt prima.
 
Ben ik helemaal met je eens! Veel handiger voor de gebruiker.
 
CSS:
Sub M_snb()
  With Application.InputBox("selecteer wat cellen of rijen", , , , , , , 8)
     If .Cells(1).Row > 7 Then .EntireRow.Delete
   End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan