2.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Leute,

ich habe eine Excel Mappe in der Bewerber eingetragen sind. Diese hat zum größten Teil Makros und Userformen.

In den Userformen habe ich Textboxen eingepflegt.

Nun möchte ich, dass wenn ich in den Textboxen etwas eintrage, dies in DERSELBEN Zeile nur in TABELLE2 z.B. in Spalte A eingetragen wird. Es soll jedoch wenn ich die Userform aufrufe auch der Text den ich vorher eingetragen habe dann in der Textbox zu sehen sein.

Wie kriege ich das hin?????

Gruß
Clancy

5 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Clancy,

kannst Du

Nun möchte ich, dass wenn ich in den Textboxen etwas eintrage, dies in DERSELBEN Zeile nur in TABELLE2 z.B. in Spalte A eingetragen wird. Es soll jedoch wenn ich die Userform aufrufe auch der Text den ich vorher eingetragen habe dann in der Textbox zu sehen sein.

etwas genauer erklären? Woher hast Du denn die Zeile, und welcher Text soll in der TextBox erscheinen? Der, den Du eingetragen hast und der dann in Tabelle 2 in Spalte A eingetragen wurde oder welchen meinst Du?

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
Hallo Oliver,

danke für die schnelle Antwort. Die Bewerber trage ich untereinander in Tabelle1! Spalte A. Die Userform rufe ich anhand eines Buttons auf, der mit dem Code "ActiveSheet.CommandButton1.Top = ActiveCell.Top" mit wandert.

Wenn ich nun die Userform öffne und ich befinde mich z.B. in Zelle 32, dann soll das was ich in Textbox1 eintrage in derselben Zeile (also Zeilie 32) in Spalte A in der TABELLE2 aber eingetragen werden. Wenn ich dann die Userform öffne soll in Textbox1 das erscheinen was vorher eingetragen wurde.

Wie ich in einer festen Zeile etwas eintrage ist mir bewusst (Sheets("Tabelle2").Range("A1") = TextBox1). Hier soll jedoch die aktive Zelle ermittelt werden.

Leider bin ich im erklären nicht wirklich gut.

Gruß
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Clancy,
der Wert aus TextBox1 wird in die Tabelle2 mit der aktiven Cell Address aus Tabelle1 eingetragen.

Dim Adress
Dim TextBox1
Adress = Selection.Address(0, 0)
Sheets(2).Range(Adress) = UserForm1.TextBox1.Value

Gruß
fedjo
0 Punkte
Beantwortet von
Hallo Fedjo,

an sich funktioniert dein Code, jedoch soll der Wert in Tabelle2 in Spalte A eingetragen werden. Hier trägt er den Wert in derselben Zelle wie Tabelle1. Nur die ZEILE soll identisch mit Tabelle1 sein.

Des Weiteren werden die Werte nachdem diese eingetragen wurden beim erneuten Aufruf der Userform nicht in der Textbox eingetragen.

Ich hoffe es sind nich all zu hohe Ansprüche :-))

Gruß
clancy
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Clancy,

mit der Codezeile

Sheets("Tabelle2").Cells(Selection.Row, 1) = UserForm1.TextBox1.Valueewird Dir der Wert aus der TextBox in das Tabellenblatt mit dem Namen "Tabelle2" in Spalte A in der entsprechenden Zeile eingetragen.

Dein 2. Wunsch ist etwas heikler. Man könnte zwar mit der Codezeile

Private Sub UserForm_Initialize()
TextBox1.Value = Sheets("Tabelle2").Cells(Selection.Row, 1)
End Subb
den Wert aus Tabellenblatt "Tabelle2" aus Spalte A wieder in die TextBox zurücklesen, aber dann darf man zwischen dem Schließen der UserForm und dem erneuten Aufrufen der Userform in keine andere Zelle einer anderen Zeile klicken, da dann ja die Zeile nicht mehr stimmen würde.
Man könnte hier mit einer Variablen arbeiten, die man in einem Standardmodul als Public deklariert. Dazu einfach ein Modul einfügen und in dieses Modul dann die Zeile

Public lngLastRow As Longgwobei Du der Variablen "lngLastRow " auch einen anderen Namen vergeben kannst. In die UserForm schreibst Du dann in das Ereignis, mit dem Du den Wert in die Zelle in Tabellenblatt "Tabelle2" schreibst die Codezeilen

lngLastRow = Selection.Row

Sheets("Tabelle2").Cells(lngLastRow, 1) = UserForm1.TextBox1.Valuee
in das Ereignis "UserForm_Initialize" der USerForm schreibst Du dann

Private Sub UserForm_Initialize()
TextBox1.Value = Sheets("Tabelle2").Cells(lngLastRow, 1)
End Subb
Der Wert der Variablen bleibt solange erhalten bis er überschrieben wird. Nachteil hier, wird die Datei geschlossen und wieder geöffnet, kann nicht mehr festgestellt werden, in welcher Zeile der letzte Eintrag stattgefunden hat.
Damit man auch nach dem Schließen und Öffnen auf dei letzte Zeilennummer zurückgreifen kann, muss dieser Wert irgendwo in der Datei abgespeichert werden. Ich mache mir hierzu immer ein Tabellenblatt, dass ich Hilfstabelle nenne und dann ausblende. Ich lasse dann die Zeilennummer in eine bestimmte Zelle dieses Hilfstabellenblatts schreiben. Wenn ich dann die Datei speichere, schließe und wieder öffne, kann ich den Wert aus dieser Zelle auslesen und weiß dann, welche Zeile die letzte bearbeitete war.

Ich habe Dir zur Veranschaulichung mal eine Beispieldatei erstellt, in der alle 3 Varianten aufgezeigt werden. Lade Dir die Datei unter
http://www.excelbeispiele.de/beispiele_supportnet/Beispiel_Clancy.xls mal herunter und schaue es Dir an.

Bei Fragen melde Dich.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
...