Anzeige
Archiv - Navigation
1960to1964
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

VBA Userform Button Speichern und neuen Wert in Textbox

VBA Userform Button Speichern und neuen Wert in Textbox
03.02.2024 01:19:07
DLMuc
Hallo liebe VBA Gemeinde,

nach dem ich hier schon sehr viele Tipps, Trick's und Hilfestellungen gefunden habe, komme ich voran. Aber bei einem Problem hängt es bei mir massiv bzw. ich finde überhaupt keine Lösung und hoffe auf Unterstützung von Euch.

Istzustand:
Es besteht eine UF die über einen Code mit vorhanden Daten aus einer Tabelle bestückt wird. Die Werte werden in Textboxen eingetragen und sind nicht veränderbar, sie dienen nur zur Unterstüzung.

Beispiel:
Name: Andre (TextboxVorname nicht veränderbar)
Gesamtrechnung: 12,50 € (TextboxRechnung nicht veränderbar)
Bezahlt: leer (TextboxBezahlt veränderbar)

Ich trage in die TB den Bezahlten Betrag ein und betätige den Button Buchen. Daraufhin wird der Wert in die Tabelle (Ordnungsgemäß) eingetragen und die UF schließt sich.

Aufgabe:
Weiterer Button (Buchen & Weiter) der im Prinzip das gleiche macht wie der Speichern Button, nur soll in die TBVorname und TB Rechnung der nächste Wert aus der Liste geladen und angezeigt werden. So das ich jede Person aus meiner Liste nacheinander abarbeiten kann.
Kann mir hierfür vielleicht jemand eine Tipp bzw. Hilfestellung geben ich wäre Euch sehr dankbar!

Option Explicit

Private p_aktuelleZeile As Long

Public Property Let aktuelleZeile(ByVal neueAktuelleZeile As Long)
p_aktuelleZeile = neueAktuelleZeile
End Property

Private Sub ButtonAbbrechenBezahlen_Click()
Unload.Me
End Sub

Private Sub ButtonAbbrechenBezahlen_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ButtonAbbrechenBezahlen.BackColor = RGB(0, 112, 192)
End Sub

Private Sub ButtonBuchen1_Click()

With shMitglieder

.Cells(p_aktuelleZeile, 12).Value = TextBoxBezahlt.Value


End With

'UserForm schließen
Unload Me

End Sub

Private Sub ButtonBuchen1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ButtonBuchen1.BackColor = RGB(0, 112, 192)
End Sub

Private Sub UserForm_Activate()

'Daten laden
With shMitglieder

TextBoxVorname.Value = .Cells(p_aktuelleZeile, 2).Value
TextBoxRechnung.Value = .Cells(p_aktuelleZeile, 11).Value
TextBoxRechnung.Value = Format(TextBoxRechnung, "#,##0.00 €")
End With

End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call HoverEffektEntfernen
End Sub

Private Sub HoverEffektEntfernen()

ButtonBuchen1.BackColor = RGB(0, 152, 212)
ButtonAbbrechenBezahlen.BackColor = RGB(0, 152, 212)

End Sub


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Userform Button Speichern und neuen Wert in Textbox
03.02.2024 03:53:07
Oberschlumpf
Hi,

zeig doch bitte per Upload eine Bsp-Datei mit genügend Bsp-Daten in den richtigen Zellen und deinem Code und natürlich mit Userform usw.

Ciao
Thorsten
AW: VBA Userform Button Speichern und neuen Wert in Textbox
03.02.2024 09:40:26
Alwin Weisangler
Hallo,
du hast die Property Funktion und dessen Anwendung falsch verstanden.
Du willst eine leere auf Privat gesetzte Variable verwenden. Das führt zum Fehler.
Wenn eine Variable nur modulweit benötigt wird braucht es Property nicht nötigerweise.
Da reicht unter Option Explicit Dim Variable as ....

Globale bzw. projektweite Variablen die im Property geladen werden, wäre bezogen auf deinen Codeschnipsel so:


Option Explicit
Private p_aktuelleZeile As Long

Property Get aktuelleZeile() As Long
If p_aktuelleZeile = 0 Then ' nur für den Fall des einmaligen Füllens erfrderlich
p_aktuelleZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
End If
aktuelleZeile = p_aktuelleZeile
End Property


Die Abfrage der Variable wäre bezogen auf deinen Codeschnipsel dann so:


.Cells(aktuelleZeile, 12).Value = TextBoxBezahlt.Value

Soll die Variable ungekapselt gefüllt werden und gelesen werden nutzt/verwendest du die Kombi Get/Set.
Dazu ein Beispiel bezogen auf deinen Codeausschnitt:


Option Explicit
Private p_aktuelleZeile As Long

Property Let aktuelleZeile(aktuelleZeile As Long)
p_aktuelleZeile = aktuelleZeile
End Property

Property Get aktuelleZeile() As Long
aktuelleZeile = p_aktuelleZeile
End Property


ein Abfragebeispiel dazu:


Sub VriableFuellenAbfragen()
aktuelleZeile = 3

MsgBox aktuelleZeile
End Sub

Das macht öffentlich eingesetzte Variablen im Lokalfenster lesbar und hat den Vorteil bei Fehler bleibt der Wert bei der 1. Variante, weil gekapselt erhalten und in der 2. Variante wird Variable wiederhergestellt.
Zum Rest des Codes nur so viel.
Private Variablen bleiben auch privat.
Sollte das so nicht weiterhelfen, lade mal hoch was du bis jetzt hast.

Gruß Uwe





Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige