Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
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
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA in Excel einbauen verkn. mit Tabellenblättern

VBA in Excel einbauen verkn. mit Tabellenblättern
01.07.2008 16:20:21
Calu
Hallo zusammen,
folgende Aufgabe stellt sich mir:
Tabellenblatt 1:
Zelle A1=Projektbeginn
Zelle A2=Laufzeit
Tabellenblatt 2:
Spalte A=Beginn (Datum)
Spalte B=Monate (Laufzeit)
Spalte C=Ende (Datum)
Spalte D=Beschreibung
Spalte E=Betrag über Laufzeit
Tabellenblatt 3:
Zeile 1=Jahreszahlen für den Betrachtungszeitraum (z.B. A1=2008, B1=2009, C1=2010 etc)
In Tabellenblatt 2 werden nun Zeilenweise die entsprechenden Felder gefüllt wie z.B.:
Beginn: Sep 08
Monate: 5
Ende: Jan 09
Beschreibung: Excel-Programmierung
Betrag: 10.000 €
Beginn: Okt 08
Monate: 1
Ende: Okt 08
Beschreibung: Projektmanagement
Betrag: 3.500 €
etc...
In Tabellenblatt 2 können max 254 Zeilen stehen ggf aber auch 3 Zeilen sein.
Projektstart: Sep 08
Laufzeit: 16 Monate
Dies ist bis hier alles gegeben.
Nun möchte ich, daß in Tabellenblatt 3 unter den Jahreszahlen die zughörigen jährlichen Beträge erscheinen. Man kann bei der Berechnung davon ausgehen, daß der Betrag/Monate immer linear verteilt werden kann.
In diesen Falle müsste in TB3 dann erscheinen:
2008 2009
11.500€ 2.000 €
Ich kann ein wenig programmieren, habe aber noch nie irgendein VBA Script in Excel eingebaut und dann noch Tabellenblättern und variierenden Zellen verknüpft. Ich denke mit dem folgenden Grundgerüst sollte zumindest die Berechnung der Ergebnisse pro Zeile funktionieren. Dies müsste dann meinem Verständnis nach pro Jahr einmal über TB 2 laufen um die jeweiligen Anteile mit einzurechnen.
Folgende Idee hatte ich:
Benötigte Variabeln:
Startdatum, Enddatum, Laufzeit, monatlicherBetrag
Diese Variablen müssen dann irgendwie per FOR ... NEXT Schleife auf die jeweilige Zeile in TB2 2 verlinkt werden
JahresEnde (Betrachtungsjahr), JahresBeginn (Betrachtungsjahr), Betrachtungsjahr
könnten statisch je Spalte in TB3
(Anmerkung: TB=Tabellenblatt)
For zähler=1 to 254
IF TB 2 Zelle A (zähler) ""
' Variablen füllen
Startdatum = TB 2 Zelle A(Zähler)
Laufzeit = TB 2 Zelle B(Zähler)
Enddatum = TB 2 Zelle C(Zähler)
Betrag = TB 2 Zelle E(Zähler)
monatlicher Betrag = Betrag/Laufzeit
' Auf die Monate bezogenes Ergebnis berechnen
IF Startdatum 'kleinergleich' Jahresbeginn & Enddatum 'groessergleich' Jahresende
Ergebnis = monatlicher Betrag x 12
END IF
IF Startdatum 'kleinergleich' Jahresbeginn & Enddatum 'kleinergleich' Jahresende
Ergebnis = monatlicher Betrag x MONAT(Enddatum)
END IF
IF Startdatum 'groessergleich' Jahresbeginn & Enddatum 'groessergleich' Jahresende
Ergebnis = monatlicher Betrag x (13- MONAT(Startdatum))
END IF
IF Startdatum 'groessergleich' Jahresbeginn & Enddatum 'kleinergleich' Jahresende
Ergebnis = monatlicher Betrag x Laufzeit
END IF
' Ergebnis zum Betrachtungsjahr in TB 3 addieren
TB 3 Zelle B1 = TB 3 Zelle B1 + Ergebnis
NEXT
Vielleicht geht das ganze ja auch irgendwie anders und viel einfacher, ich weiß jedoch nicht wie, und hab im Moment auch keine Idee, wie ich das so in Excel implementieren kann. Ich hoffe ich konnte das ganze irgendwie anschaulich erläutern. Eigentlich eine ganz einfache Addition, die jahresbezogen verrechnet.
Kann mir da jemand helfen? Wäre superfreundlich!
Beispiel Datei: https://www.herber.de/bbs/user/53500.xls
Danke und Gruß
Calu

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA in Excel einbauen verkn. mit Tabellenblättern
03.07.2008 14:24:00
Dani
Hallo Calu
bin mir nicht sicher ob ich dich richtig verstanden habe aber ich habe dir mal was gebastelt, vieleicht hilft dir das weiter.

Private Sub Umsatzberechnung()
Dim JahresBeginn, JahresEnde, Jahr As Integer
Dim i, Listenlänge As Integer
Dim Target As Range
Dim Betrag As Double
Worksheets("Tabelle3").Range("A2:AA2") = ""
Listenlänge = Worksheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
'Ältestes Jahr:
Jahr = 9999
With Worksheets("Tabelle2")
For i = 2 To Listenlänge
If Jahr > Year(.Cells(i, 1)) Then Jahr = Year(.Cells(i, 1))
Next
JahresBeginn = Jahr
'Neustes Jahr:
Jahr = 0
For i = 2 To Listenlänge
If Jahr 


Gruss
Dani

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige