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

Textfelder in Userform aktualisieren - bei Ereignis

Textfelder in Userform aktualisieren - bei Ereignis
21.09.2023 23:39:51
Andreas
Hallo,

welche Möglichkeit gibt es, im Userform den Inhalt von zwei Textboxen sofort zu aktualisieren, ohne das Userform neu zu starten.

Der Inhalt der 2 Textboxen wird aus dem aktiven, geöffneten Sheet "Bearbeiten" befüllt.

Derzeit erfolgt die Übernahme beim Neustart des Userform.

Vielleicht bei Änderung von Daten in der Spalte "C", oder bei anderen Ereignissen.

Wie könnte dazu ein Code aussehen, und wo müsste dieser hin?

Folgendes steht im UF
Private Sub UserForm_Activate()


UserForm100.TextBox1052 = Worksheets("Bearbeiten").Cells(ActiveCell.Row - 1, 3).Value
UserForm100.TextBox1053 = Worksheets("Bearbeiten").Cells(ActiveCell.Row - 2, 3).Value


End Sub



Gruß Andreas

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfelder in Userform aktualisieren - bei Ereignis
22.09.2023 00:31:42
ralf_b
ungetestet. wo das change Ereignis hingehört ist dir aber klar, oder? falls nicht, rechte maustaste aufs Arbeitsblattregister und "Code anzeigen" klicken

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("C:C")) Is Nothing Then
UserForm100.TextBox1052 = Target.Value
End If
End Sub
AW: Textfelder in Userform aktualisieren - bei Ereignis
22.09.2023 08:23:09
Daniel
Hi
Der Code passt schon.
Aber die Codezeilen müssen ins SelectionChange-Eventmakro des Tabellenblatts, da sich die Werte ja ändern können, sobald du den Cursor in einer anderen Zeile platzierst

Und du solltest absichern, dass es keinen Fehlerabbruch gibt, wenn du die Userform noch nicht gestartet hast, oder wenn die ActiveCell in Zeile 1 oder 2 ist.
Ein einfaches On Error Resume Next am Anfang sollte hier aber genügen

Gruß Daniel
Anzeige
AW: Textfelder in Userform aktualisieren - bei Ereignis
22.09.2023 08:48:52
Andreas
Hallo
der Code läuft, ein On Error Resume Next habe ich auch am Anfang schon gesetzt, da es sonst bei Zeile 1 und 2 zu Abbrüchen kommt.

Vollkommener wäre es, wenn natürlich in der Textbox1052 der Wert aus der Spalte "C" EINE Zeile über der activen Zeile angezeigt wird.

Habe schon mal experimentiert... na ist noch nicht ganz lauffgähig...
On Error Resume Next



If Not Intersect(Target, Range.Cells(ActiveCell.Row - 1, 2).Resize(1, 3)) Is Nothing Then

UserForm100.TextBox1052 = Target.Value

End If


Gruß Andreas
Anzeige
AW: Textfelder in Userform aktualisieren - bei Ereignis
22.09.2023 08:55:09
Oberschlumpf
Hi Andreas,

oder versuchs mal so:


On Error Resume Next

UserForm100.TextBox1052 = Target.Offset(-1,0).Value

hier würde die Textbox den Wert aus der direkt 1 Zeile höher liegenden Zelle, gleiche Spalte wie aktive Zelle erhalten.

Hilfts?

Ciao
Thorsten
Verbesserung
22.09.2023 09:19:30
Oberschlumpf
Hi Andreas,

ich hatte übersehen, dass du nur bei Änderung in Spalte C die Textboxen aktualieren willst (und bei anderen Änderungen, aber die hast du nicht namentlich genannt)

So also der vllt bessere Code, der nur bei Änderung in Spalte C durchgeführt wird:


On Error Resume Next

If Not Intersect(Target, Columns(3)) Is Nothing Then
UserForm100.TextBox1052 = Target.Offset(-1,0).Value
'...weitere Textboxen, die aktualisiert werden sollen
End If

Jetzt wird der Code nur bei Änderung in Spalte C ausgeführt.

Hilfts besser?

Ciao
Thorsten
Anzeige
AW: Verbesserung
22.09.2023 12:17:57
ralf_b
ein Hinweis @Thorsten Wenn Target in Zeile 1 ist???
stümmt, besser is das!^^
22.09.2023 14:15:21
Oberschlumpf
Hi Andreas,

aber zuerst wüsst ich gern, ob denn mein Code grundsätzlich passt (außer, dass bei Änderung in Zelle C1 nix passiert)?

Ciao
Thorsten
AW: stümmt, besser is das!^^
22.09.2023 14:26:36
Andreas
Erst mal eine Dank an alle mitwirkenden...

Der Code passt - macht genau die Eintragungen im Userform - und das sofort beim Eintrag- so war es gewünscht.

Nun sieht der Code so aus:

Option Explicit


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim bereich As Range
Dim zeile As Integer
Set bereich = Range("A:L")
'alle anderen Zeilen
bereich.Font.ColorIndex = 1
bereich.Font.Bold = 0
bereich.Interior.ColorIndex = 0
'aktive Zeile
zeile = ActiveCell.Row
Cells(zeile, 1).Resize(1, 12).Interior.ColorIndex = 19
Cells(zeile, 1).Resize(1, 12).Font.Bold = 1

On Error Resume Next

If Not Intersect(Target, Columns(3)) Is Nothing Then
UserForm100.TextBox1052 = Target.Offset(-1, 0).Value
UserForm100.TextBox1053 = Target.Offset(-2, 0).Value
End If


End Sub



Danke schön

Grüße Andreas
Anzeige
AW: stümmt, besser is das!^^
22.09.2023 14:51:52
Oberschlumpf
ok, wenn du willst, kannst du noch direkt unterhalb der Intersect-Zeile das hier schreiben:


If Target.Row = 1 Then MsgBox "Oberhalb von Zeile 1 sind keine Werte verfügbar - das Makro wird beendet" : Exit Sub

Ciao
Thorsten
AW: sehr gute Ergänzung
22.09.2023 15:19:40
Andreas
Ok, dadurch kann ich das "On Error Resume Next" weg lassen.

Danke

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige