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

Werteingaben in einer Maske in die formatierte Tabelle übernehmen

Werteingaben in einer Maske in die formatierte Tabelle übernehmen
06.11.2019 09:09:01
Maximilian
Hallo Profis,
ich sitze nun schon länger an dem Problem und konnte hierzu noch keine Lösung finden. Weder selbst noch durch Foren.
Mein Problem ist folgendes: Ich habe eine Maske erstellt in die ich Werte eintrage und diese in eine Tabelle übernommen werden. Dabei sollen diese Werte eine Zeile unter der bereits bestehenden Tabelle eingefügt werden, sowie die Formeln übernommen werden. Soweit so gut.
Das jeweilige Tabellenblatt nimmt die Werte an, fügt diese jedoch nicht unter der letzten Zeile hinzu. Es handelt sich um eine formatierte Tabelle und die eingegebenen Werte werden unter dieser eingefügt aber die formatierte Tabelle nicht erweitert.
Den Code welchen ich in VBA geschrieben habe lautet:

Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row + 1
'Dass die einzelnen Daten in die nächst freie Zeile in der ausgewählten Spalte eingetragen wird (Problem: Daten werden nicht in der Tabelle, sondern darunter eingetragen)
ActiveSheet.Cells(last, "B").Value = CDate(UserForm2.TextBox_Datum.Value)
ActiveSheet.Cells(last, "D").Value = (UserForm2.ListBox_Kostenstelle.Value)
ActiveSheet.Cells(last, "F").Value = (UserForm2.ListBox_Verbrauchsstoff.Value)
ActiveSheet.Cells(last, "J").Value = (UserForm2.TextBox_Verbrauch.Value)
'Dass die Formeln der Zelle oben drüber für die neue übernommen werden (Durch das Problem der Dateneinlese wie oben beschrieben, können die Formeln nicht übernommen werden)
ActiveSheet.Cells(last, "E").FormulaR1C1 = ActiveSheet.Cells(last - 1, "E").FormulaR1C1
ActiveSheet.Cells(last, "H").FormulaR1C1 = ActiveSheet.Cells(last - 1, "H").FormulaR1C1
ActiveSheet.Cells(last, "I").FormulaR1C1 = ActiveSheet.Cells(last - 1, "I").FormulaR1C1
ActiveSheet.Cells(last, "K").FormulaR1C1 = ActiveSheet.Cells(last - 1, "K").FormulaR1C1
Unload UserForm2
UserForm1.Show

Kann mir zufällig jemand sagen woran das Problem liegt? Liegt es an dem Code oder an Excel selbst mit der Tabelle?
Ich bedanke mich schon mal herzlich im Voraus!
Mit freundlichen Grüßen
Maximilian

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werteingaben in einer Maske in die formatierte Tabelle übernehmen
06.11.2019 10:38:24
Piet
Hallo Maximilian
du sprichst von einer intelligenten Tabelle, aber da funktioniert der normale Standard Suchlauf nach LastZell NICHT mehr! (Sie ist ja auch "intelligent"!!) Excel sieht sie als Objekt, nicht als Tabelle!
Als eingefügtes Object hat sie ein Tabellen Ende, du müsstest also ab da noch oben suchen. Meine Lösung: - suche von Oben nach unten, das klappt! Erfordert aber eine Prüfung ob die Tabelle LEER ist! last = ActiveSheet.Cells(1, "B").End(xldown).Row + 1
İf ActiveSheet.Cells(2, "B").Value = Empty then last =2
Zweite Lösung: - last = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).End(xlUp).Row + 1
Die Profis machen es noch anders, die gehen ,über den BodyRange der Tabelle. Den Befehl musst du googeln.
mfg Piet
Anzeige
AW: Werteingaben in einer Maske in die formatierte Tabelle übernehmen
06.11.2019 10:55:21
Werner
Hallo Piet,
das passt aber nur, wenn die intelligente Tabelle nicht bis ans Ende gefüllt ist. In dem Fall liefert das
 last = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).End(xlUp).Row + 1

die erste Zeile nach der Überschriftenzeile.
Ich mach das immer mit Find:
last = ActiveSheet.Columns("B").Find(what:="*", LookIn:=xlValues,  _
lookat:=xlWhole, searchdirection:=xlPrevious).Offset(1).Row
Gruß Werner
AW: Werteingaben in einer Maske in die formatierte Tabelle übernehmen
06.11.2019 14:11:58
Maximilian
Hallo Werner,
ich muss wohl irgendetwas falsch eingegeben haben, da der Code jetzt einwandfrei funktioniert.Super!
Super!
Besten Dank für die Hilfe!
MfG
Maximilian
Anzeige
AW: Werteingaben in einer Maske in die formatierte Tabelle übernehmen
06.11.2019 11:02:00
Maximilian
Hallo Piet,
vielen Dank für die schnelle Antwort!
Ich habe es nun mal mit deinem Code versucht, jedoch werden die Werte nicht in der intelligenten Tabelle eingefügt.
Diese startet bei Zeile 6 (Überschriften). Die Werte werden jedoch bei Zeile 2 eingefügt.
Ich habe versucht deinen Code mit der Zeile 6 (wo die Tabelle anfängt) anzupassen:
last = ActiveSheet.Cells(6, "B").End(xldown).Row + 1
İf ActiveSheet.Cells(7, "B").Value = Empty then last =7

bei beiden Codes leider ohne Erfolg.
Hast du evtl. noch andere Vorschläge?
Ich wäre dir sehr dankbar!
Mfg
Maximilian
Anzeige
von mir ein Danke fürs Ignorieren. o.w.T.
06.11.2019 12:01:56
mir
AW: von mir ein Danke fürs Ignorieren. o.w.T.
06.11.2019 13:58:11
mir
Hallo Werner,
sry hatte die Antwort nicht gesehen.
Habe gerade versucht das Problem mit deinem Code zu lösen, jedoch trat dabei dasselbe Problem auf. Die Werte wurden oberhalb der intelligenten Tabelle, welche sich in Zeile 6 befindet, eingefügt.
Danke für deine Antwort und Entschuldigung fürs Übersehen.
Mfg
Das kann nicht sein außer...
06.11.2019 17:35:19
Werner
Hallo,
...du stellst die letzte Zelle in Spalte B fest, deine intelligente Tabelle beginnt aber erst in Spalte C oder du ermittelst die letzte Zelle im falschen Blatt.
Gruß Werner
AW: Das kann nicht sein außer...
06.11.2019 20:24:37
Piet
Hallo Maximilian
ich sehe gerade den Hinweis von Werner, und der gemeldete Fehler ist technisch vçllig korrekt. In der Praxis haben Privatleute aber selten 1.4 Millionen Zellen voll beledgt! Da habe ich wenig Bedenken ..
Aendere deinen Code bitte mal so ab: - denn ActiveSheet im Makro kann tödlich sein, wenn du das Blatt wechselst, und dann startest!! Wir vermeiden das durch die With Klammer.
Setzte nach Dim eine With Klammer - With Worksheets("deine Tabelle") - deinen Tabellen Namen. Setze vor Unlaad Me ein End With! Dann löschst du überall das Wort "ActiveSheet" weg, laesst aber den Punkt vor .Cells stehen!! Der ist sehr wichtig!! Alle Cells beziehen sich jetzt im With Bereich auf die angegebene Tabelle! Auch dann, wenn du das Blatt wechselst!! Ich denke du erkennst selbst diese "kleinen" aber wichtigen VBA Feinheiten.
öfg Piet
Anzeige
AW: Das kann nicht sein außer...
06.11.2019 21:00:06
Werner
Hallo Piet,
aber nur bei deiner Version mit zweimal EndxlUp kommst du bei komplett befüllter Spalte B in Zeile 2 raus.
Bei EndxlDown wird Zeile 7 geliefert, bei meiner Version mit Find läuft das natürlich in einen Fehler.
Gruß Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige