Registriert seit: 24.02.2017
Version(en): 365; (2013)
23.01.2019, 10:54
(Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2019, 10:54 von StrammerMax.)
Hallo,
ich habe hier eine Userform mit mehreren Textfeldern "TextBox 1-12) in die ich Zahlen eingebe.
Ich habe einen Button "alles übernehmen" der die Daten von der Userform in eine Arbeitsmappe speichert.
Gespeichert werden sollen allerdings nur die Werte aus Textfeldern die auch visible sind. Sind die Felder invisible soll beim klick auf "alles übernehmen" der Wert "" (leer) gespeichert werden.
Code:
Private Sub TextBox1_Change()
Worksheets("Input").Activate
Range("C30").Value = TextBox1.Value
End Sub
Code:
Private Sub AllesUebernehmen_click()
Dim i As Integer
For i = 1 To 12
If Controls("TextBox" & i).Visible = True Then
Controls ("TextBox" & i & "_Change")
Else: Controls("TextBox" & i).Value = ""
End If
Next
End Sub
Bei dem Aufruf der Change-Methode
Controls ("TextBox" & i & "_Change") sagt er aber Syntaxfehler.Wie bekomme ich das so hin, dass er dort die jeweilige Change Methode aufruft?Und generell - funktioniert meine Logik? :50: --> konkret: ruft das hier Controls("TextBox" & i).Value = "" automatisch die Change Methode auf, so dass es den Wert auch in die Arbeitsmappe übernimmt?
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
So funktioniert das nicht.
Code:
Private Sub TextBox1Aenderung()
Worksheets("Input").Activate
Range("C30").Value = TextBox1.Value
End Sub
Code:
Private Sub TextBox1_Change()
Call TextBox1Aenderung
End Sub
Code:
Private Sub AllesUebernehmen_click()
Dim i As Integer
For i = 1 To 12
If Controls("TextBox" & i).Visible = True Then
Call TextBox1Aenderung
Else
Controls("TextBox" & i).Value = ""
End If
Next
End Sub
Wobei sich mir ja eine Frage aufdrängt: Wie (und wieso) gibt man einen Wert in eine nicht sichtbare Textbox ein?
Schöne Grüße
Berni
Registriert seit: 24.02.2017
Version(en): 365; (2013)
Hallo MisterBurns,
vielen Dank - ich probiere es gleich mal aus.
1. Die Textboxen ziehen Initial den Wert aus der Arbeitsmappe - falls bereits etwas steht ziehen sie erstmal die Werte
2. Die TextBoxen können ein und ausgeblendet werden.
Wenn jetzt jemand so schlau ist, sie einblendet, etwas rein schreibt und sich dann überlegt, dass er den Bereich doch nicht braucht und ihn wieder ausblendet sollen die Werte natürlich auch nicht in die Arbeitsmappe übernommen werden.
Bzw. falls vorher etwas drin stand soll dieser Wert gelöscht werden.
Das ist der Sinn dahinter.
Registriert seit: 24.02.2017
Version(en): 365; (2013)
Funktioniert einwandfrei :)
Registriert seit: 24.02.2017
Version(en): 365; (2013)
Aber eine Frage noch.
Ich habe 12 TextBoxen - die jeweils in unterschiedliche Zellen des Arbeitsblattes schreiben.
dann kann ich doch nicht einfach jedes mal Call TextBox1Aenderung aufrufen?
ich müsste doch jedes mal spezifisch bei i = 1 Textbox1Aenderung, bei i = 2 Textbox2Aenderung usw. aufrufen?
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Zitat:ich müsste doch jedes mal spezifisch bei i = 1 Textbox1Aenderung, bei i = 2 Textbox2Aenderung usw. aufrufen?
ja, das ist richtig.
Schöne Grüße
Berni
Registriert seit: 24.02.2017
Version(en): 365; (2013)
23.01.2019, 14:21
(Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2019, 14:22 von StrammerMax.)
Und wie?
Call TextBox1Aenderung
--->
Call ("TextBox" & i & "Aenderung")
Funktioniert so leider nicht.
Keine Ahnung wieso - aber es funktioniert auch so genau so wie ich das möchte.
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
23.01.2019, 14:49
(Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2019, 14:53 von Elex.)
Hi
Textbox1 ist in deinem Bsp. mit C30 verknüpft. Welche Zelle ist den mit Textbox2 verknüpft und so weiter.
Evtl. brauchst du die Change Prozeduren gar nicht.
Code:
Private Sub AllesUebernehmen_click()
Dim i As Integer
Worksheets("Input").Activate
For i = 1 To 12
If Controls("TextBox" & i).Visible = True Then
Cells(30, i + 2).Value = Controls("TextBox" & i).Value
Else
Cells(30, i + 2).Value = ""
End If
Next
End Sub
Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:1 Nutzer sagt Danke an Elex für diesen Beitrag 28
• StrammerMax
Registriert seit: 24.02.2017
Version(en): 365; (2013)
TextBox2 = C31
TextBox3 = C32
..
So ist die Logik.
Die Change Methode brauche ich, da ich dort Werte eingebe, die direkt übernommen werden soll.
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
23.01.2019, 15:34
(Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2019, 15:34 von MisterBurns.)
Schreibe zB
Code:
Private Sub TextBox1Aenderung()
Worksheets("Input").Activate
Range("C30").Value = TextBox1.Value
End Sub
in ein allgemeines Modul (ich denke, in der Userform wird es nicht funktionieren, wäre aber zu testen). Dann kannst du mit
Code:
Private Sub AllesUebernehmen_click()
Dim i As Integer
Worksheets("Input").Activate
For i = 1 To 12
If Controls("TextBox" & i).Visible = True Then
Application.Run "TextBox" & i & "Aenderung"
Else
Cells(30, i + 2).Value = ""
End If
Next
End Sub
die Prozeduren aufrufen.
Schöne Grüße
Berni