Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Automatische Änderung in Userforntextboxen

Betrifft: Automatische Änderung in Userforntextboxen von: Heiko
Geschrieben am: 11.10.2014 21:06:07

Guten Abend zusammen

Ich habe, für euch sicherlich, ein kleines Problem.

Ich habe eine Exceldatei mit 2 Arbeitsblättern.
(1. AB = Fzg / 2. AB = Berechnungen)

In 1. stehen in Spalte A verschiedene Namen und in den folgenden Spalten dazugehörige Zahlenwerte (Grundwerte).
Die 2. ist genauso aufgebaut wie die 1., nur werden hier die Zahlenwerte des 1. ABs mit einer in der Userform befindlichen Textbox( überträgt die Zahl an eine Zelle (N2) auf dem 2. AB) multipliziert.

In der Userform habe ich eine Combobox, die mit den Namen des 1. AB befüllt wird.
Wähle ich dort einen Namen aus, sollen die Textboxen die jeweiligen Zahlenwerte aus dem 2. AB anzeigen.
Dies funktioniert auch prima.

Über die einzelne Textbox(AnzahlFzg) übergebe ich einen neuen Wert an die Tabelle. Jetzt sollten sich eigentlich die Werte in den Textboxen ändern, tun sie aber leider nicht.

Was muss ich machen, um dies hinzubekommen?
Ich hoffe ihr könnt mir helfen :)

Danke schon mal im voraus.

Benutze Excel 2013

Hier noch der Code, den ich bis jetzt habe (einiges auch hier im Forum gefunden):

MfG. H. Steinborn

----------------------------------------------------------------------------
Option Explicit

'Combobox mit Daten fuellen






Private Sub UserForm_Initialize()
    With Auswahl_Fzg
        Auswahl_Fzg.RowSource = "Fzg!A3:A26" 'Tabelle Fzg Spalte A
        .Value = "- Fahrzeug auswählen -" 'Anzeige in der Combobox
        .ListRows = 15 'kann ich an die Anzahl der Einträge anpassen
    End With
'Abfrage aktueller Wert in Tabelle
 Me.AnzahlFzg.ControlSource = "Berechnungen!N2"
 
 
End Sub

'Fuellen der Textboxen mit den Daten des ausgewaehlten Fzg





Private Sub Auswahl_Fzg_Change()
Dim F As Variant

Set F = Sheets("Fzg").Range("A3:A26").Find(Auswahl_Fzg)

If Not F Is Nothing Then
Label10.Caption = Sheets("Berechnungen").Range("B" & F.Row) 'Testlabel
Stahl = Sheets("Berechnungen").Range("B" & F.Row)
Carbon = Sheets("Berechnungen").Range("C" & F.Row)
Waffenstaerke = Sheets("Berechnungen").Range("D" & F.Row)
Panzerung = Sheets("Berechnungen").Range("E" & F.Row)
WaffenRW = Sheets("Berechnungen").Range("F" & F.Row)
Sicht = Sheets("Berechnungen").Range("G" & F.Row)
MP = Sheets("Berechnungen").Range("I" & F.Row)
Sprit = Sheets("Berechnungen").Range("J" & F.Row)
Zeit = Sheets("Berechnungen").Range("L" & F.Row)
End If

End Sub

'Uebergabe der Zahl aus Textbox an die Tabelle





Private Sub AnzahlFzg_change()
Sheets("Berechnungen").Range("N2") = AnzahlFzg.Value
End Sub

'Zahlenformat anpassen (Tausender)





Private Sub Stahl_Change()
    If IsNumeric(Stahl.Text) Then Stahl.Text = Format(Stahl.Text, "#,##0")
End Sub

'Zahlenformat anpassen (Tausender)





Private Sub Carbon_Change()
    If IsNumeric(Carbon.Text) Then Carbon.Text = Format(Carbon.Text, "#,##0")
End Sub

'Zahlenformat anpassen (Tausender)





Private Sub Waffenstaerke_Change()
    If IsNumeric(Waffenstaerke.Text) Then Waffenstaerke.Text = Format(Waffenstaerke.Text, "#,##  _
 _
 _
 _
_
0")
End Sub

'Formatierung der Zeitangabe





Private Sub Zeit_Change()
Zeit = Format(Zeit, "hh:mm:ss")
End Sub

' ---------------------------------------------------------
' Label sollte genauso formatiert werden, wie die Textboxen - geht aber nicht





' Private Sub label10_Activate()
' Labels10.Caption = Format(Sheets("Berechnungen").Range("B" & F.Row), "#,##0")
' End Sub

  

Betrifft: AW: Automatische Änderung in Userforntextboxen von: Steffi
Geschrieben am: 11.10.2014 21:54:13

Hallo,

wenn ich das richtig verstehe, dann willst du dass die Einträge in den Textboxen (Stahl, Carbon etc.) aktualisiert werden wenn der Wert aus der Textbox 'AnzahlFzg' an das Tabellenblatt übergeben wird. Ich würde das Ganze dann so machen:

Private Sub Auswahl_Fzg_Change()
    Einträge_aktualisieren
End Sub


Private Sub AnzahlFzg_change()
    Sheets("Berechnungen").Range("N2") = AnzahlFzg.Value
    
    Einträge_aktualisieren
End Sub


Private Sub Einträge_aktualisieren()
    Dim F As Worksheet
    
    Set F = Sheets("Fzg").Range("A3:A26").Find(Auswahl_Fzg)
    
    If Not F Is Nothing Then
        Label10.Caption = Sheets("Berechnungen").Range("B" & F.Row) 'Testlabel
        Stahl = Sheets("Berechnungen").Range("B" & F.Row)
        Carbon = Sheets("Berechnungen").Range("C" & F.Row)
        Waffenstaerke = Sheets("Berechnungen").Range("D" & F.Row)
        Panzerung = Sheets("Berechnungen").Range("E" & F.Row)
        WaffenRW = Sheets("Berechnungen").Range("F" & F.Row)
        Sicht = Sheets("Berechnungen").Range("G" & F.Row)
        MP = Sheets("Berechnungen").Range("I" & F.Row)
        Sprit = Sheets("Berechnungen").Range("J" & F.Row)
        Zeit = Sheets("Berechnungen").Range("L" & F.Row)
    End If
    
    Set F = Nothing
End Sub

Warum das mit dem Label nicht geht: da würde ich mal darauf tippen dass es daran liegen könnte, dass das Sub, welches das Label ändern soll, die Variable 'F' nicht kennt. Ist ja nur in einem anderem Sub definiert.

Gruß Steffi


  

Betrifft: AW: Automatische Änderung in Userforntextboxen von: Steffi
Geschrieben am: 11.10.2014 21:56:56

Kleinen Fehler gefunden:

Es sollte

Dim F as Range
heißen.


  

Betrifft: AW: Automatische Änderung in Userforntextboxen von: Heiko
Geschrieben am: 12.10.2014 17:05:26

Hallo Steffi

Danke für die schnelle Antwort. Ich werde dies sogleich testen und dann berichten.

Gruß Heiko


  

Betrifft: AW: Automatische Änderung in Userforntextboxen von: Heiko
Geschrieben am: 12.10.2014 20:38:21

Hallo Steffi

Ich nochmal:

Habe deinen Code so bei mir angepasst. Er funktioniert einwandfrei. Danke nochmal.

Ich habe mit einem Kollegen noch etwas rumgebastelt an dem Code und verwende jetzt nur noch Labels. Das hatte ich vorher so nicht hinbekommen.

Das ganze sieht dann wie folgt aus im Code: (für die, die später auch mal sowas benötigen)

Private Sub Einträge_aktualisieren()

Dim F As Range

Set F = Sheets("Fzg").Range("A3:A26").Find(Auswahl_Fzg)
'Werte aus Tabelle "Berechnungen" in die Labels schreiben und formatieren
If Not F Is Nothing Then
    lblStahl.Caption = Format(CDbl(Sheets("Berechnungen").Range("B" & F.Row)), "#,##0")
    lblCarbon.Caption = Format(CDbl(Sheets("Berechnungen").Range("C" & F.Row)), "#,##0")
    lblWaffenstaerke.Caption = Format(CDbl(Sheets("Berechnungen").Range("D" & F.Row)), "#,##0")
    lblPanzerung.Caption = Format(CDbl(Sheets("Berechnungen").Range("E" & F.Row)), "#,##0")
    lblWaffenRW.Caption = Format(CDbl(Sheets("Berechnungen").Range("F" & F.Row)), "#,##0")
    lblSicht.Caption = Format(CDbl(Sheets("Berechnungen").Range("G" & F.Row)), "#,##0")
    LblMP.Caption = Format(CDbl(Sheets("Berechnungen").Range("I" & F.Row)), "#,##0")
    lblSprit.Caption = Format(CDbl(Sheets("Berechnungen").Range("J" & F.Row)), "#,##0")
    lblZeit.Caption = Format(Sheets("Berechnungen").Range("L" & F.Row), "hh:mm:ss")
    
End If
Set F = Nothing
End Sub
Also nochmal Danke für deine Hilfe.

Gruß Heiko


 

Beiträge aus den Excel-Beispielen zum Thema "Automatische Änderung in Userforntextboxen"