2.5k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo an alle,

ich habe eine Frage zu VBA:

Habe mir eine Eingabemaske zum Erfassen von Ktoauszugsdaten gemacht.: Ausz.nr. /Blattnr. /Buchungsdatum/Bezahlt an,erhalten von/
bezahlt für, erhalten für/Zeitraum/Soll/Haben.

Für die verschied. Posten, wie z.B. Zahlungen an Stadt, Energielief. usw. habe ich je eine extra Tabelle angelegt.

Nun meine Frage:
ist es möglich über die Eingabemaske die Daten nicht nur in die Tabelle Kontoauszüge einzutragen, sondern auch gleich auf die einzelnen Tabellen Stadt, Energielief zu verteilen?

Würde mich über Hilfe freuen

Gruß
Lotte

6 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
hallo,

grundsätzlich ja, da uns aber der Aufbau deiner Tabellen nicht bekannt ist, nur allgemein. Es kommt, nach meiner Einschätzung, in Frage

SVerweis(), WVerweis()
Summenprodukt()
Index(), Wahl()

und Makros.

Gruß

Helmut
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Lotte,

hier mal ein kurzer Beispielcode, der eine Eingabe in zwei Tabellen einer Arbeitsmappe schreibt:

Sub test()

Dim t As String

t = InputBox("Bitte geben Sie einen Text ein!", "Eingabe")
Workbooks("Mappe2").Worksheets("Tabelle1").Range("A1") = t
Workbooks("Mappe2").Worksheets("Tabelle2").Range("B1") = t

End Sub


Deinen vorhandenen Code kannst du entsprechend modifizieren.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo Helmut u. M.O.

Danke für Eure Antworten.

Zur Verdeutlichung meinen Code:

Option Explicit
Private Sub CommandButton1_Click()
Public Row As Integer 'Initialisieren
Dim Auszug_B As Integer Löschen
Dim Blatt_B As Integer Kontobewegungen.L_Beweg.AddItem "En"
Dim Butag_B As Date Kontobewegungen.L_Beweg.AddItem "Deg"
Dim Nr_B As Integer Kontobewegungen.L_Beweg.AddItem "Sta"
Dim fuer_B As String Kontobewegungen.L_Beweg.AddItem "Las"
Dim Haben_B As Currency Kontobewegungen.L_Beweg.AddItem "Wic"
Dim Soll_B As Currency Kontobewegungen.L_Beweg.AddItem "F"
Dim Ktostand_B As Currency Kontobewegungen.L_Beweg.AddItem "Yi"
Dim Beweg_L As String 'Letzten Eintrag suchen
Suchen
Sub Suchen() 'Nr. des Eintrags
Sheets("2008").Activate Kontobewegungen.B_Nr = Row - 2
Range("A1").Select 'Dialogfeld anzeigen
Row = 4 Kontobewegungen.Show
While ActiveSheet.Cells(Row, 1).Value <> "" End Sub
ActiveSheet.Cells(Row, 1).Select
Row = Row + 1
Wend
ActiveSheet.Cells(Row, 1).Select

End Sub
Sub DatenLesen()
Nr_B = Kontobewegungen.B_Nr
Auszug_B = Kontobewegungen.B_Auszug
Blatt_B = Kontobewegungen.B_Blatt
fuer_B = Kontobewegungen.B_fuer
Butag_B = Kontobewegungen.B_Butag
Haben_B = Kontobewegungen.B_Haben
Soll_B = Kontobewegungen.B_Soll
Beweg_L = Kontobewegungen.L_Beweg
End Sub

Sub DatenÜbertragen()
Cells(Row, 1) = Nr_B
Cells(Row, 2) = Auszug_B
Cells(Row, 3) = Blatt_B
Cells(Row, 4) = Butag_B
Cells(Row, 5) = Beweg_L
Cells(Row, 6) = fuer_B
Cells(Row, 8) = Haben_B
Cells(Row, 7) = Soll_B
Ktostand_B = Cells(Row - 1, 9).Value
Cells(Row, 9) = Ktostand(Ktostand_B, Haben_B, Soll_B)
End Sub

Function Ktostand(K, H, S As Currency) As Currency
Kontobewegungen.B_Ktostand = K + H - S
Ktostand = K + H - S
End Function

Sub Neu()
Löschen
Row = Row + 1
Kontobewegungen.B_Nr = Row - 2
Kontobewegungen.B_Butag.SetFocus
End Sub

Sub Löschen()
Kontobewegungen.B_Soll = 0
Kontobewegungen.B_Haben = 0
Kontobewegungen.B_Butag = ""
Kontobewegungen.B_Auszug = ""
Kontobewegungen.B_Blatt = ""
Kontobewegungen.B_fuer = ""
End Sub

Da in den Ktoauszügen nicht alles nach der Reihe steht (Stadt, Engerievers. usw.) was in eine Tab. kommt
muß ich hier nicht mit If.....then arbeiten?
If....in Cells(Row, 5) Stadt steht - then in Tab. Stadt
If....in Cells(Row,5) Energievers. steht - then in Tab Nk-Tab.
usw.

Sehe ich das richtig?

Gruß
Lotte
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

zwei beispiele :-))

gruss nighty :-)

tabellennamen zur zeit ,zweite zeile spalte 5

eine ereignis makro fuer entsprechenden automatismus

Cells(2, 5) koennte man mit target.row bzw target.column ergaenzen

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 5 And Target.Cells.Count = 1 Then
If SheetExists("" & Cells(2, 5)) = True Then
Rows(Target.Row).Copy
Worksheets("" & Cells(2, 5)).Range("A" & Worksheets("" & Cells(2, 5)).Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
Else
MsgBox "Tabelle " & ZielTabelle & " gibt es nicht,Vorgang wird abgebrochen"
End If
Application.EnableEvents = True
End If
End Sub


ein makro fuer haendischen start bzw zuweisung zu elementen

Cells(2, 5) koennte man mit ActiveCell.Row bzw ActiveCell.column ergaenzen

Sub Kopie()
If SheetExists("" & Cells(2, 5)) = True Then
Rows(2).Copy
Worksheets("" & Cells(2, 5)).Range("A" & Worksheets("" & Cells(2, 5)).Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
Else
MsgBox "Tabelle " & Cells(2, 5) & " gibt es nicht,Kopievorgang wurde nicht ausgeführt !"
End If
End Sub

eine function die bei beiden varianten in ein allgemeines modul gehoert
Public Function SheetExists(strName As String) As Boolean
On Error Resume Next
SheetExists = Not Worksheets(strName) Is Nothing
End Function


dies sind nur ansaetze :-))
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

und wie üblich :-))

korrigiert o_o

gruss nighty

ereignismakro
ZielTabelle

ersetzen durch
Cells(2, 5)
0 Punkte
Beantwortet von
Hallo nighty,

habe Deinen 1. Code ausprobieren wollen, kann in aber nicht aufrufen!??

Wenn ich auf Start drücke, geht Fenster auf wo eigentlich der Makroname stehen sollte, steht aber nichts.

Danke für Hilfe im voraus.

Gruß
Lotte
...