Anzeige
Archiv - Navigation
1268to1272
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

VBA code löscht meine Formatierung

VBA code löscht meine Formatierung
Marc
Hallo Excel Gemeinde!
Seit einiger Zeit lese ich hier schon mit und habe schon viele hilfreiche Dinge programmieren können. Leider bin ich jetzt, da ich von VBA keine Ahnung habe, an meine Grenzen gestossen.
Ich nutze eine Übersicht von Stellplätzen welche man über ein Dropdown Menü belegen kann. Durch den jeweils angewählten Titel wird mir dieser in von mir vorgegebener Farbe angezeigt.
Da sich diese Übersicht ständig verändert habe ich einen Button "Inhalt Felder löschen" eingefügt. Soweit, so gut!
Die Felder des Dropdown Menüs sind ja nun immer so breit wie die vorgegebene Zelle. Dadurch lassen sich aber die Informationen nicht gut lesen. Die Zellengrösse eines Dropdowns kann man ja anfangs gross machen und dann in einer schmalen Zelle speichern. Leider löscht mein VBA Button Befehl für den Zelleninhalt zu löschen auch immer wieder diese Formatierung.
Hier ist ein Auschnitt von dem Code. Hat es etwas mit dem "Clear Contents" Befehl zu tun? Kann mir da jemand weiterhelfen?
  • 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngCell As Range
    Dim bytColor As Byte
    ' Bereich der überwacht wird
    Set Target = Intersect(Target, Range("K3:P3,E10:O10,T10:Y10,AA10:AN10,B17:N17,B22:G22,AE17:AN17, _
    _
    _
    U24:AD24,U29:AD29,C29:P29,B34:Q34")) 'Bereich anpassen
    If Target Is Nothing Then Exit Sub
    For Each rngCell In Target
    Select Case rngCell.Value 'Wert in Großbuchstaben umwandeln
    Case "Schrauben"
    bytColor = 15
    Case "Nägel"
    bytColor = 15
    Case "Unterlegscheiben"
    bytColor = 15
    End Select
    rngCell.Interior.ColorIndex = bytColor
    Next rngCell
    End Sub
    Sub Schaltfläche13_BeiKlick()
    DeleteKondContents Range("K3:P3,E10:O10,T10:Y10,AA10:AN10,B17:N17,B22:G22,AE17:AN17,U24: _
    AD24,U29:AD29,C29:P29,B34:Q34")
    End Sub
    Sub DeleteKondContents(ByVal Bereich As Range)
    Dim Zelle As Range
    For Each Zelle In Bereich
    Zelle.MergeArea.ClearContents
    Next Zelle
    Set Zelle = Nothing
    End Sub
    
  • Im voraus vielen Dank für die Hilfe! Gruss, Marc

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Benutzer
    Anzeige
    AW: VBA code löscht meine Formatierung
    20.06.2012 11:27:23
    Heiko
    Hallo Marc,
    dein Problem liegt in einer "Kollision" zwischen .ClearContents und dem daraus resultierendem _Change- Ereignis.
    Ein .ClearContents löst gleichzeitig ein _Change- Ereignis aus. Da die dann leere Zelle nicht deiner Select Case- Anweisung entspricht, ist bytColor=0 und somit wird die Farbe der Zelle überschrieben.
    Du könntest das umgehen, indem du in DeleteKondContents ein Application.EnableEvents=False setzt. Dabei aber nicht vergessen, die Events wieder zu aktivieren, sonst funktioniert deine _Change Prozedur nicht mehr.
    Grüße
    Heiko
    AW: VBA code löscht meine Formatierung
    20.06.2012 13:23:46
    Marc
    Hallo Heiko!
    Da ich mein Problem als Laie schwer erklären kann, habe ich eine Datei hochgeladen:
    https://www.herber.de/bbs/user/80657.xls
    Gewünscht ist das das Dropdown Menü genauso breit ist wie die Wörter darin. Das bekomme ich auch hin. Sobald ich aber die Schaltfläche "Felder löschen" einfüge ist die Formatierung mit der Breite dahin. Oder liegt das Problem woanders?
    Danke und Gruß,
    Marc
    Anzeige
    AW: VBA code löscht meine Formatierung
    20.06.2012 13:45:53
    Heiko
    Hallo Marc,
    die Lösung kann ich so stehen lassen. bytColor ist 0, und damit wird auch die Zellfarbe gelöscht (besser gesagt auf Weiß gesetzt).
    Lösung: (in Worksheet_Change)
    
    For Each rngCell In Target
    Select Case rngCell.Value 'Wert in Großbuchstaben umwandeln
    Case "Schrauben"
    bytColor = 15
    Case "Muttern"
    bytColor = 10
    Case "Unterlegscheiben"
    bytColor = 18
    Case Else    'Diese Zeile hinzu
    Exit Sub   'Diese Zeile hinzu
    End Select
    rngCell.Interior.ColorIndex = bytColor
    Next rngCell
    
    Grüße
    Heiko

    307 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige