Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1412to1416
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makros nur in Grenzen ausführen lassen

Makros nur in Grenzen ausführen lassen
19.03.2015 07:45:04
Matthias
Hallo,
ich kann über nachfolgenden Code einen Datensatz einfügen in einen Blatt. Abgelegt ist der Datensatz im Register Datensatz.
Sub ZeileEinfügen()
Dim ws As Worksheet, wsV As Worksheet, z%
Set ws = ActiveSheet
Set wsV = ThisWorkbook.Worksheets("Datensatz")
Application.EnableEvents = False
With Worksheets("Aufstellung Brandschutzklappen")
.Unprotect Password:="sperl"
Selection.EntireRow.Insert Shift:=xlDown
z = ActiveCell.Row
wsV.Rows("5:5").Copy ws.Range("A" & z)
Worksheets("Aufstellung Brandschutzklappen").Protect Password:="sperl"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End With
Ebenso habe ich die Möglichkeit den Datensatz wieder zu löschen.

Sub ZeileLöschen()
Dim rngBereich As Range
Set rngBereich = Range("A16:EU999") 'Hier den Bereich angeben !
If Intersect(ActiveCell, rngBereich) Is Nothing Then
Else
Worksheets("Aufstellung Brandschutzklappen").Unprotect Password:="sperl"
Selection.EntireRow.Delete
Worksheets("Aufstellung Brandschutzklappen").Protect Password:="sperl"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End If
End Sub
Leider ist es so, dass nicht nur ich diese Arbeitsmappe nutzen werde.
Deshalb möchte ich um Fehler zu vermeiden, den Bereich in dem die Makro ausgeführt werden können vorgeben.
Das Ganze soll soll zwischen Zeile 5 und 6 stattfinden. Hier darf eingefügt und gelösch werden.
Wird nun eine Zeile eingefügt erhöht sich der Gültigkeitsbereich von Zeile 5 bis auf 7.
Wird eine Zeile gelöscht geht es wieder zurück auf Zeile 5 und 6.
Ebenso darf es nicht möglich sein, die Zeile 5 und 6 zu löschen wenn nur noch die Zeile 5 und 6 vorhanden ist.
Ich hoffe ihr versteht was ich will. Ich möchte praktisch Grenzzeilen
definieren innerhalb dieser die Makros ausgeführt werden können.
Ich habe selber schon rumgebastelt (Siehe die Zeile löschen Funktion),
jedoch gelingt es mir nicht, die eigentliche Funktion umzusetzen.
Ich hoffe mit kann jemand helfen.
Besten Dank im Voraus.
Gruss

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros nur in Grenzen ausführen lassen
19.03.2015 08:58:08
Nepumuk
Hallo,
definiere in den beiden Grenzzeilen jeweils einen Namen die du im Makro abfragst. Sind sie in den Zeilen 5 und 6 darf nur eingefügt werden.
Gruß
Nepumuk

AW: Makros nur in Grenzen ausführen lassen
19.03.2015 09:04:27
Matthias
hallo,
danke für die Info.
Aber ich bin nicht so tief drin in er Materie.
Wie könnte so was realisiert werden?
Gruss

AW: Makros nur in Grenzen ausführen lassen
19.03.2015 09:27:57
Nepumuk
Hallo,
ein Beispiel:
Public Sub DeleteRow()
    Dim lngRow5 As Long, lngRow6 As Long
    If TypeOf Selection Is Range Then
        
        lngRow5 = ThisWorkbook.Names("Zeile5").RefersToRange.Row
        lngRow6 = ThisWorkbook.Names("Zeile6").RefersToRange.Row
        
        Selection.Cells(1, 1).Select
        
        If Selection.Row > lngRow5 And Selection.Row < lngRow6 Then
            
            With Worksheets("Aufstellung Brandschutzklappen")
                
                .Unprotect Password:="sperl"
                Selection.EntireRow.Delete
                .Protect Password:="sperl"
                
            End With
        Else
            Call MsgBox("Außerhalb des gültigen Bereichs.", vbExclamation, "Hinweis")
        End If
    Else
        Call MsgBox("Bitte eine Zeile auswählen.", vbExclamation, "Hinweis")
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Makros nur in Grenzen ausführen lassen
19.03.2015 09:35:56
Matthias
Hallo
danke für den Code.
Aber irgendwie bringt der bei mir den Fehler 400.
Ist es möglich dies auch auf mein Zeile einfügen Befehl zu übetragen.
Sub ZeileEinfügen()
Dim ws As Worksheet, wsV As Worksheet, z%
Set ws = ActiveSheet
Set wsV = ThisWorkbook.Worksheets("Datensatz")
Application.EnableEvents = False
With Worksheets("Aufstellung Brandschutzklappen")
.Unprotect Password:="sperl"
Selection.EntireRow.Insert Shift:=xlDown
z = ActiveCell.Row
wsV.Rows("5:5").Copy ws.Range("A" & z)
Worksheets("Aufstellung Brandschutzklappen").Protect Password:="sperl"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End With
End Sub
Ich bin wie gesagt, da noch nicht so weit drin in der Materie.

Anzeige
AW: Makros nur in Grenzen ausführen lassen
20.03.2015 09:23:47
Nepumuk
Hallo,
du musst in Zelle A5 und A6 jeweils einen Namen einfügen. Entweder direkt in das Namensfeld oder über den Reiter Formeln - Namensmanager.
Gruß
Nepumuk

AW: Makros nur in Grenzen ausführen lassen
20.03.2015 09:48:18
matthias
Unbeschreiblich.
Wahnsinn.
Danke.
Bester Tipp Ever.

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige