Zeile eines A.blattes in Tabelle einer anderer Mappe übertragen
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
Antwort schreiben
Antwort 1 von Saarbauer vom 10.07.2021, 08:08 Options
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
Antwort 2 von M.O. vom 10.07.2021, 11:34 Options
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.
Antwort 3 von FlotteLotte vom 10.07.2021, 20:06 Options
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
Antwort 4 von nighty vom 11.07.2021, 17:44 Options
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 :-))
Antwort 5 von nighty vom 11.07.2021, 18:01 Options
hi all ^^
und wie üblich :-))
korrigiert o_o
gruss nighty
ereignismakro
ZielTabelle
ersetzen durch
Cells(2, 5)
Antwort 6 von FlotteLotte vom 27.07.2021, 14:41 Options
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