Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
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

Formeln und Makros

Formeln und Makros
23.04.2013 15:58:48
Andreas
Hallo,
eine Kollegin bat mich um Hilfe, da bei einer Tabelle gewisse Buchstaben gefiltert und die in der Überschrift stehenden Tage am Ende in "Summe" gezeigt werden sollen.
Wenn zB C3 und D3 ein B enthält, dann sollte am Ende von Zeile 3 das Datum aus der Überschrift in Zelle C2 und D2 erscheinen. habe es zunächst mit Funktionen innerhalb von Excel versucht, aber keine Lösung gefunden und es nun mit VBA umgesetzt.
Da sich aber Makros nicht dynamisch an den Bereich anpassen (hinzufügen/ löschen), würde ich gerne wissen, ob man dieses Makro nicht evtl. doch mit Funktionen ermöglichen kann.

  • Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row >= 6 And Target.Row = 8 And Target.Column  "" Then 'prüfen ob eintrag angehangen wird
    vareintrag = vareintrag & ", " & Left(var_datum, 6) 'eintrag vornehmen,  _
    begrenzung auf 6 stellen
    Else
    vareintrag = Left(var_datum, 6) 'eintrag auf 6 stellen begrenzt
    End If
    End If
    Next x 'zelle in nächster spalte prüfen
    If var_datum  "" Then Cells(icounter, 254).Value = vareintrag 'eintrag suchergebnis
    vareintrag = "" 'löschen der variable für nächste suche
    Next icounter 'nächste zeile ansteuern wenn matrix abgesucht wird
    Cells(y, Z).Select 'cursor auf gewünschten punkt setzen
    End If
    Application.EnableEvents = True 'optionen wieder einschalten
    Application.ScreenUpdating = True
    End Sub
    

  • Grüße
    Andreas

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Formeln und Makros
    23.04.2013 21:31:51
    Gerd
    Hallo Andreas!
  • Da sich aber Makros nicht dynamisch an den Bereich anpassen (hinzufügen/ löschen),

  • Das sehe ich nicht so. Es kommt halt darauf an, ob z.B. dein Rechteck immer vollständig gefüllt ist.
    Außerdem kannst du einem Bereich einen Namen zuweisen u. im Code auf diesen referenzieren.
    Gruß Gerd

    AW: Formeln und Makros
    24.04.2013 08:04:03
    Andreas
    Hallo Gerd,
    das Rechteck ist leider nur teilweise gefüllt. Es handelt sich um eine Liste zur Bereitschaftsabfrage und in der Zeile darüber ist halt der lfd. Tag enthalten. Die Tabelle umfasst ein Jahr und dahinter soll halt gesammelt die Anzeige der Bereitschaftstage je Kollege (Zeile) erfolgen (zB 01.02., 05.04,...). Schon bei einem Schaltjahr ändert sich die Tabelle (Rechteck). Was meine Kollegin sonst noch ändert wird, kann ich nicht sagen. daher hatte ich die Hoffnung, dass es evtl. auch mit Formeln gehen könnte.
    Leider bin ich nicht so dolle in VBA und habe keine Ahnung, wie man einem Bereich einen Namen zuweisen kann und diesen referenziert. Für ein kleines Beispiel wäre ich dankbar.
    Grüße
    Andreas

    Anzeige
    AW: Formeln und Makros
    25.04.2013 16:09:22
    Andreas
    Hallo,
    hab nun einen anderen Weg gefunden und eine Tabelle eingefügt, welche zur Abfrage dient. Nun ist das Makro, innerhalb der Tabele, dynamisch tätig und man kann die Tabelle vergrößern und verkleinern. Geht bestimmt noch hübscher und einfacher, aber besser kann ich es nicht. Evtl. ist dieser Weg auch das, was Gerd meinte^^
  • 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngRow As Long
    Dim lngCol As Long
    Dim rngZelle As Range
    Application.ScreenUpdating = False 'optionen zum unterdrücken von ua anzeigeflimmern
    Application.EnableEvents = False
    x = ActiveCell.Address 'aktuelle zelle merken
    Range("Tabelle6[#All]").Select 'tabelle auswählen
    e = Selection.Cells(Selection.Count).Column 'letzte spalte ermitteln
    y = Selection.Row 'erste reihe ermitteln
    Z = Selection.Cells(Selection.Count).Row 'letzte reihe ermitteln
    Range(Cells(y, e + 2), Cells(Z, e + 2)) = ""
    For Each rngZelle In Selection.Cells 'tabelle abfragen
    lngRow = rngZelle.Row
    If lngRow > a Then vareintrag = "" 'bei neuer zeile variable löschen
    lngCol = rngZelle.Column
    a = lngRow
    If rngZelle = "B" Or rngZelle = "b" Then
    rngZelle = "B"
    var_datum = Cells(y - 1, lngCol).Value 'wert bei übereinstimmung
    If vareintrag  "" Then 'prüfen ob eintrag angehangen wird
    vareintrag = vareintrag & ", " & Left(var_datum, 6) 'eintrag vornehmen, begrenzung  _
    auf 6 stellen
    Else
    vareintrag = Left(var_datum, 6) 'eintrag auf 6 stellen begrenzt
    End If
    If var_datum  "" Then Cells(lngRow, e + 2).Value = vareintrag 'eintrag suchergebnis
    End If
    Next
    Range(x).Select 'zur ausgangszelle zurück
    Application.EnableEvents = True 'optionen wieder einschalten
    Application.ScreenUpdating = True
    End Sub
    

  • Grüße
    Andreas
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige