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

Application.Intersect-Methode

Application.Intersect-Methode
11.04.2020 13:44:51
Veit
Hallo in die Runde,
ich bin Neueinsteiger in puncto VBA und habe mich an einer Sache festgebissen. Ich möchte ein einfaches Tool zur Verwaltung eines Sparguthabens (Sparguthaben enthält zweckgebundene Rücklagen) erstellen. Leider komme ich ohne Expertenhilfe nicht mehr alleine weiter. Ich hoffe, Ihr habt eine Lösung.
Ich versuche mein Problem so kurz aber dennoch genau wie möglich zu beschreiben, wobei ich hierzu den Aufbau der Datei und die Zielsetzung kurz erklären muss.
1. Dateiaufbau: 4 Tabellenblätter
  • Menü (enthält makrohinterlegte Commandbuttons welche zu den einzelnen Tabellenblättern springen)
  • Standardpositionen (Hier sind regelmäßig wiederkehrende, budgeterhöhende Standardbuchungen [Rücklagearten] mit den zugehörigen Werten hinterlegt. Per Aktivierung eines Commandbuttons werden diese automatisch in das 3. Tabellenblatt [Kontoübersicht] übertragen und der dortige Kontosaldo entsprechend erhöht.)
  • Kontoübersicht (besteht im Wesentlichen aus einem „festen“ Informationsbereich (A3:A10), welcher über „Fenster fixieren“ immer sichtbar bleibt. Darunter befindet sich eine veränderliche Datentabelle (bestehend aus 3 Spalten: Rücklageart, Betrag, Entstehungsdatum; der Datenbereich wurde im Bereich A13:C10000 definiert). Dem Datenbereich werden regelmäßig Rücklagen zugebucht und ab und an wieder gelöscht. Im Informationsbereich werden in Zeile B3 ein Kontostand, in Zeile B4 das letzte Änderungsdatum des Kontostandes und in den Zeilen B6 [Summe der zweckgebundenen Rücklagen] und B9 [Summe des verfügbaren Budgets] Angaben über die Budgetverteilung ausgewiesen.)
  • PivotTableAuswertung (greift auf den Datenbereich der Tabelle „Kontoübersicht“ zu und wertet das Budget zahlentechnisch und grafisch [PivotChart mit Kreisdiagramm über Rücklagenarten] aus.
    2. Zielsetzung:
  • Regelmäßig wiederkehrende budgeterhöhende Standardbuchungen sollen per Knopfdruck automatisiert vorgenommen werden (Daten werden in Tabelle Kontoübersicht jeweils untereinander in den Datenbereich geschrieben, der Kontosaldo entsprechend erhöht sowie das Änderungsdatum des Kontostandes festgehalten. [ERLEDIGT]
  • Reduzierungen der Spareinlagen sollen dem Kontosaldo nicht automatisch abgezogen werden. Begründung: Bei einer Reduzierung/Auflösung von Rücklagen muss sich nicht zwangsläufig auch der Kontosaldo reduzieren.
  • Bei der manuellen Auflösung bzw. Reduzierung einer Rücklage im Tabellenblatt „Kontoübersicht“ soll sich automatisch eine Messagebox mit einem Hinweis öffnen, welcher daran erinnert, dass der Kontostand ggf. händisch angepasst werden muss.
  • Die PivotTable und das PivotChart müssen sich bei Änderungen automatisch aktualisieren.
    3. Problem: VBA-Umsetzung in Tabelle „Kontoübersicht“
  • VBA-Programmierung der Messagebox bei Veränderung des Datenbereichs A13:C10000 (durch Auflösung/Reduzierung einer Rücklage) bekomme ich nicht hin!
  • Irgendwie sollte der Abgleich des Datenbereichs und die Aktivierung der Messagebox mit der Application.Intersect-Methode funktionieren, leider reichen meine derzeitigen VBA-Kenntnisse dafür nicht wirklich aus.
    Vielen Dank für Eure Hilfe!
  • 4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Application.Intersect-Methode
    11.04.2020 13:53:12
    Hajo_Zi
    Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
    Sollte die Datei verlinkt werden?
    Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
    http://www.ms-office-forum.de/forum/showthread.php?t=322895
    änderrn.
    Das ist nur meine Meinung zu dem Thema.

    AW: Application.Intersect-Methode
    12.04.2020 12:43:14
    Veit
    Entschuldigung, mir ist entgangen, dass es sich ohne Beispieldatei schlecht an der Sache arbeiten lässt. Was die Problembeschreibung angeht, bitte ich um Nachsicht, da meine VBA-Kenntnisse sehr überschaubar sind.
    https://www.herber.de/bbs/user/136657.xlsm
    Gruß
    Anzeige
    AW: Application.Intersect-Methode
    11.04.2020 14:22:02
    onur
    "Aktivierung der Messagebox mit der Application.Intersect-Methode " ?
    Tolle Beschreibung - aber ICH werde sie bestimmt nicht lesen, solange du die (Beispiels-) Datei nicht postest.
    AW: Application.Intersect-Methode
    15.04.2020 11:01:20
    MCO
    Hallo Veit!
    Ich hab mich da mal durchgewurschtelt und einiges angepasst:
    Folgender angepasster Code, siehe Kommentare zur Funktion:
    Sub VerbuchenRuecklagen()
    Application.EnableEvents = False 'automatische Auslösung der msgbox verhindern
    Dim lz As Range, Ber_Rückl As Range
    Set Ber_Rückl = Range("B4").CurrentRegion 'Rücklagenbereich finden
    'Bereich anpassen
    Set Ber_Rückl = Ber_Rückl.Offset(1, 0).Resize(Ber_Rückl.Rows.Count - 2, Ber_Rückl.Columns. _
    Count)
    'Bereich summieren, für später
    Std_summ = WorksheetFunction.Sum(Ber_Rückl.Offset(0, 1).Resize(Ber_Rückl.Rows.Count, Ber_Rü _
    ckl.Columns.Count - 1))
    'Erste freie Zeile im Zielbereich finden
    Set lz = Sheets("Kontoübersicht").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
    Ber_Rückl.Copy lz 'Datensätze einfügen
    With Sheets("Kontoübersicht").Range(lz, lz.End(xlDown)).Offset(0, 2)
    .NumberFormat = "mm\/yyyy" 'Zellen formatieren
    .Value = Range("e3") 'buchungsdatum einsetzen
    End With
    ' Aktualisierung des Kontostandes
    Sheets("Kontoübersicht").Select
    Range("B3") = Range("B3") + Std_summ '(siehe oben)
    ' Dokumentation des Datums
    Range("B4") = Date
    ' Alle Daten aktualisieren (wichtig für Refresh der PivotTable)
    ActiveWorkbook.RefreshAll
    Application.EnableEvents = True
    End Sub
    
    Im Blatt Tabelle3(Kontoübersicht) (VBA-Explorer) muß folgendes stehen
    Private Sub Worksheet_Change(ByVal Target As Range)
    Set isec = Application.Intersect(Target, Range("B:B"))
    If Not isec Is Nothing Then MsgBox "Hinweis öffnen, welcher daran erinnert, dass der  _
    Kontostand ggf. händisch angepasst werden muss.", vbInformation + vbOKOnly, "Achtung"
    End Sub
    
    Damit werden dann alle Anderungen in Spalte "B" mit msgbox quittiert
    Ich hoffe, dass ist in etwa das, was du wolltest...
    Gruß, MCO
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige