Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Spalten und Zeilen sperren in Verbindung mit VBA
#1
Hallo zusammen,

hier mein nächstes Problem

Reiter 1 (Eingang Leads) = Spalte A (Kunden) Spalte B (Datum) Spalte C (Kürzel Sachbearbeiter) - wird manuell eingetragen
Reiter 3-7 (Sachbearbeiter) = Spalte A (Kunden) Spalte B (Datum) - wird aus Reiter 1 gezogen

Die jeweiligen Reiter 3-7 ziehen sich aus Reiter 1 entsprechend den Kunden und das Anfragedatum. In den jeweiligen Reitern 3-7 habe ich ein Code hiterlegt um Leerzeilen auszublenden. Wenn ich jetzt die Spalten A und B in den Reitern 3-7 sperren will (damit der Sachbearbeiter da nichts einträgt, bekomme ich immer wieder eine Fehlermeldung. Anbei die Codes und Formeln:

Formeln in den jeweiligen Reitern 3-7 für Kunden:
=WENN('EINGANG LEADS'!C5="AM";'EINGANG LEADS'!A5;"")

Formeln in den jeweiligen Reitern 3-7 für Datum:
=WENN('EINGANG LEADS'!C5="AM";'EINGANG LEADS'!B5;"")

Bei der Formel muss noch berücksichtigt werden, dass ich wenn im Reiter 1 ein Datumfilter gesetzt wird, nur die Kunden im Reiter 3-7 auch angezeigt werden!!


Code für die Reiter:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    Dim xRg As Range
    Application.ScreenUpdating = False
        For Each xRg In Range("A5:A1000")
            If (xRg.Value = "") Or (xRg.Value = "0") Then
                xRg.EntireRow.Hidden = True
            Else
                xRg.EntireRow.Hidden = False
            End If
        Next xRg
    Application.ScreenUpdating = True
End Sub


Vielen Dank im Voraus!!!
Antworten Top
#2
Hi

Du arbeitest mit 365. Schau Dir mal die Funktion "FILTER" an.
Für genauer Beispiele solltest du ein Bsp.Datei zur Verfügung stellen.

Gruß Elex
Antworten Top
#3
Das kann ich heute noch machen.

Kann mir jemand sagen, wieso der Code meine Exceltabelle so langsam macht?!
Antworten Top
#4
Hi

Evtl. solltest du das noch bei Application.ScreenUpdating mit einbauen.
Code:
Application.EnableEvents = False
Application.EnableEvents = True
Aber du brauchst kein VBA.
Antworten Top
#5
Ich bin wirklich eine Leie! Was kann ich denn sonst machen??

Im Reiter 1 Werden ja die Kundeneingetragen, diese werden auf vier Mitarbeiter verteilt, bzw. aus dem Reiter 1 gezogen. Wenn ich auf dem Reiter des Mitarbeiter bin, sind zwischen den Kunden mehrere Leerzeilen....?!
Antworten Top
#6
Zitat:Kann mir jemand sagen, wieso der Code meine Exceltabelle so langsam macht?!

Weil Du bei jeder Änderung in Deinem Blatt knapp 1000 Zellen durchgehst und prüfst, ob es leer oder 0 ist. Solange Du im Range("A5:A1000")  nichts änderst, ist das meistens unnötig. Problematisch wird es bei Formeln.

Als erstes könntest Du am Anfang einen Guard einbauen, um das ganze schneller zu machen
Code:
    If Intersect(Target, Range("A5:A1000")) Is Nothing Then
        Exit Sub
    End If
Wie gesagt, das klappt nur, wenn im  Range("A5:A1000") keine Formeln sind.
Antworten Top
#7
könntest du mir bitte den ganzen Code sagen?!
Antworten Top
#8
Zitat:Ich bin wirklich eine Leie! Was kann ich denn sonst machen??
Kleine Bsp.Datei. Das Verkürzt die Geschichte bestimmt.
Antworten Top
#9
Im Range A5 bis A100 wird ständig was geändert
Antworten Top
#10
Zitat:Im Range A5 bis A100 wird ständig was geändert
Wie das, wenn ausgeblendet, außer im Fall von Formeln

Beispieldatei!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste