ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
445
445
EMPFEHLEN
-
18.12.09 13:50 #1DasBinIch132 Tutorials.de Gastzugang
Hallo ihr vielen Programmierer-Spezies,
bis jetzt hab ich immer nur n bisschen mit Excel-Funktionen hantiert, aber jetzt möchte ich einen Kontoplan erstellen, der sich mit den 0815-Formeln nicht mehr realisieren lässt.
Wie gesagt, es soll ein Kontoplan werden.
Im Tabellenblatt 1 habe ich eine Eingabe eingerichtet. D.h.
B3= Datum der Bewegung
D3= Bemerkung
F3= Betrag der Bewegung
H3= Konto der Bewegung
Nun möchte ich, das die Werte anhand des Wertes in H3 in das entsprechende Tabellenblatt eingetragen werden. Z.b. Wert 1 = Sparkasse (=Tabellenblatt 2), Wert 2 = Volksbank (=Tabellenblatt 3) usw.
Das klappt bis jetzt sehr gut.
Auch die Funktion der anschließenden Sortierung habe ich noch hinbekommen.
(D.h. wenn ich eine Bewegung am 01.06. habe und eine am 01.03 die ich im später eintrage, dann ist es in der richtigen zeitlichen Reihenfolge in den entsprechenden TBlättern sortiert.)
Mein Problem: In den Tabellenblättern möchte ich in der Spalte B den aktuellen Kontostand sehen.
Nur nach dem Sortieren muss er dementsprechend jede Zelle B die nach dem neu eingetragenen Datum liegt aktualisieren/neu berechnen.
So solls aussehen:
1 2 3 4
A 01.01.2009 100,-€ Anfangsbestand 0,-€
B 02.02.2009 A2+B4 Bewegung #1 5,-€
C ......
Hier mein derzeitiger Code:
Sub Daten_eintragen()
Dim Zeile
Dim Zeilr
'nur wenn in B3 und D3 etwas drinsteht dann eintragen
If [b3] <> "" And [d3] <> "" Then
'Tabellenblatt ermitteln
If [h3] = "1" Then
Sheets("SPK").Select
'letzte benutzte Zeile ermitteln + 1
Zeile = Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row + 1
Zeilr = Cells(Rows.Count, 1).End(xlUp).Row
'Daten eintragen
Cells(Zeile, 1) = Sheets("Eingabe").Range("b3").Value
Cells(Zeile, 2) = Cells(Zeilr, 2) + Sheets("Eingabe").Range("f3").Value
Cells(Zeile, 3) = Sheets("Eingabe").Range("d3").Value
Cells(Zeile, 4) = Sheets("Eingabe").Range("f3").Value
Cells(Zeile, 5) = Sheets("Eingabe").Range("h3").Value
'Sortieren
Range(Cells(1, 1), Cells(Rows.Count, 5)).Sort _
Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal
'Eingaben löschen
Sheets("Eingabe").Select
[b3] = ""
[d3] = ""
[f3] = ""
[h3] = ""
'letzte Zeile in sichtbaren Bereich holen
Cells(Zeile, 1).Select
Else
'Tabellenblatt ermitteln
If [h3] = "2" Then
Sheets("2.VoBa").Select
........
Habt Ihr ne Idee oder Verbesserungs-/Vereinfachungsvorschlägen?
Vielen Dank im Voraus!
DasBinIch132
-
18.12.09 14:00 #2DasBinIch132 Tutorials.de Gastzugang
Noch ne kleine Anmerkung;
für routinierte VBAler scheint das n Kinderspiel zu sein, hab grad folgende Ansatz bekommen:
FOR x=0 TO dataArray.Ende - 1
dataArray[x+1][b] = dataArray[x][b] + dataArray[x+1][c] END FOR
Leider weiß ich nicht ganz wie ich das einsetzen kann bzw. was es letztendlich bewirkt ..
MfG DasBinIch132
-
21.12.09 14:49 #3DasBinIch132 Tutorials.de Gastzugang
Kann man das evtl. auch mit 'ner 0815-Excelformel machen?
Ich könnte doch in die Spalte B die Formel B1+D2 eingeben und das das für jede Spalte bis 65537 eintragen.
Dann müsste ich nur die zwei Bereiche A1:A65537 und C1:E65537 sortieren.
Würde das gehen?
Ich habs gerade probiert, indem ich in die Sortierfunktion ein "&" eingefügt habe.
Allerdings meckert Excel dann... Habe ihr ne Idee?
MfG DasBinIch 132
-
Hab dir zwar keine Lösung, da ich Programmierer und nicht Excel-Bastler bin. Jedoch solltest du dein Code formatiert in [VB]...[/VB] setzen, damit sie für die Forenuser lesbar sind (formatiert mit sauberem einrücken). Das Zeug ist sonst einfach unlesbar.
FOR .. TO .. END FOR ist eine Schleife. Mach dich mal klug darüber.
Nachtrag
Irgendwie hat dein Code keine END IF......Geändert von Yaslaw (21.12.09 um 15:13 Uhr)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
21.12.09 15:35 #5DasBinIch 132 Tutorials.de Gastzugang
Hier mein derzeitiger Code:
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
Sub Daten_eintragen() Dim Zeile Dim Zeilr 'nur wenn in B3 und D3 etwas drinsteht dann eintragen If [b3] <> "" And [d3] <> "" Then 'Tabellenblatt ermitteln If [h3] = "1" Then Sheets("SPK").Select 'letzte benutzte Zeile ermitteln + 1 Zeile = Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row + 1 Zeilr = Cells(Rows.Count, 1).End(xlUp).Row 'Daten eintragen Cells(Zeile, 1) = Sheets("Eingabe").Range("b3").Value Cells(Zeile, 2) = Cells(Zeilr, 2) + Sheets("Eingabe").Range("f3").Value Cells(Zeile, 3) = Sheets("Eingabe").Range("d3").Value Cells(Zeile, 4) = Sheets("Eingabe").Range("f3").Value Cells(Zeile, 5) = Sheets("Eingabe").Range("h3").Value 'Sortieren Range(Cells(1, 1), Cells(Rows.Count, 5)).Sort _ Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal 'Eingaben löschen Sheets("Eingabe").Select [b3] = "" [d3] = "" [f3] = "" [h3] = "" 'letzte Zeile in sichtbaren Bereich holen Cells(Zeile, 1).Select Else 'Tabellenblatt ermitteln If [h3] = "2" Then Sheets("2.VoBa").Select ........
Hier meine Idee fürs sortieren (die nicht funktioniert):
Code vb:1 2 3 4 5
'Sortieren Range((Cells(1, 1), Cells(Rows.Count, 1)) & (Cells(Rows.Count, 3), Cells(Rows.Count, 5)).Sort _ Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal
Vielen Dank im Voraus!
DasBinIch132
-
22.12.09 17:47 #6DasBinIch132 Tutorials.de Gastzugang
Hab die Lösung!!
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Sub Daten_eintragen() Dim Zeile As Long, Z As Long 'nur wenn in B3 bis H3 etwas drinsteht dann eintragen If [b3] = "" Or [d3] = "" Or [f3] = "" Or [h3] = "" Then Exit Sub 'Tabellenblatt ermitteln With Worksheets(Range("H3").Value) 'letzte benutzte Zeile ermitteln + 1 Zeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'Daten eintragen .Cells(Zeile, 1) = Range("b3").Value .Cells(Zeile, 3) = Range("d3").Value .Cells(Zeile, 4) = Range("f3").Value 'Sortieren .Range("A2:D" & Zeile).Sort _ Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal .Cells(2, 2) = .Cells(2, 4) If Zeile <> 2 Then .Range("B3:B" & Zeile).Formula = "=B2+D3" .Range("b2:B" & Zeile).Value = .Range("b2:B" & Zeile).Value Else .Range("B2") = .Range("D2") End If 'Eingaben löschen Range("B3,D3,F3,H3").ClearContents MsgBox "Eingetragen" Range("B3").Value = Date End With End Sub
Danke für eure Hilfe ... -.-
Ähnliche Themen
-
Java Quellcode "Übung Kontostand"
Von eduard07 im Forum JavaAntworten: 2Letzter Beitrag: 13.12.06, 08:40





Zitieren

Login





