Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

EXCEL VBA Forms

Forumthread: EXCEL VBA Forms

EXCEL VBA Forms
12.04.2026 11:29:25
Richard
Hallo liebe VBA Freunde,

In einem Formular soll die Summe von 2 Textboxen überprüft werden.
z.B. Textbox1 Eingabe 4
Texbox2 Eingabe 3 die Summe wäre dann 7
Der max_Wert darf aber nur 6 sein, dann müsste Textbox 2 wieder geleert werden.
Bei mir ergibt aber "Summe=Textbox1.Value + Textbox2.Value" nicht 7 sondern "43" die Einzelwerte werden nur zusammengefügt und nicht addiert,

wer hat da eine Lösung?
Gruß Richard
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Excel VBA Forms
12.04.2026 11:37:47
ReginaR
Moin,

Du fügst da 2 Strings aneinander, den in Textboxen stehen wie der Name schon sagt, erst mal Texte.

Versuch mal so:

Summe= Cdbl(Textbox1)+cdbl(Textbox2)

VG Regina
Danke an alle Liebe Grüße
13.04.2026 13:48:23
Richard
Vielen Dank für eure Hilfe
Gruß Richard
Der Operator + in VBA
12.04.2026 11:49:43
RPP63
Moin Richard!
In Textboxen steht grundsätzlich … Text! ;)
Auch Ziffern sind deshalb zunächst Text.
Das Plus dient in VBA (auch) Textverkettungen (deshalb Dein Ergebnis).

Lösung:
Prüfe den Textboxinhalt zunächst, ob er als Zahl erkannt werden kann.
Wenn ja, dann wandle ihn in eine Zahl um und führe die Addition durch.
If IsNumeric(TextBox1) And IsNumeric(TextBox2) Then

Summe = CDbl(TextBox1) + CDbl(TextBox2)
End If


Unter anderem deshalb halte ich rein gar nichts von UserForms.
Ist für Neulinge eine hübsche Spielerei.
Aber Textboxen haben gegenüber Excel-Zellen so viele Nachteile, dass ich sie nicht verwende.

Gruß Ralf
Anzeige
UserForms sind keine Spielerei
13.04.2026 06:34:44
Marc
@RPP63 wieso sind UserForms schlecht ? und nur eine Spielerei?

Dem kann ich absolut nicht beipflichten.
UserForms sind zur Eingabe von Werten/Visualisierung unverzichtbar, wer aber natürlich nicht damit lernt um zu gehen (AusnahmeHandling, Überprüfen der Eingabe VOR der Benutzung) scheitert schnell daran.

Zudem sind Excel Felder deutlich langsamer in der Bearbeitung und Auswertungen, als z.B. UserForms mit Textboxen..
Das mag bei kleineren Berechnungen nicht groß auffallen, aber ab mittleren Zahlen/Berechnungsaufgaben, wird es schnell sichtbar.
Hole aus einer Datenbank mal 100.000 Zahlen und schreibe sie in Excel Zellen und Schreibe sich in UserForms Felder..
Da wirst du deutlich schneller sein...

Die Werte in einer UserForm befinden sich nicht auf einer langsamen Festplatte , sondern im deutlichen schnelleren Speicher
Anzeige
Deine Meinung sei Dir unbenommen
13.04.2026 08:38:28
RPP63
Moin Marc!
Userforms sind nun mal keine "echten" Formulare, wie sie bspw. Access verwendet.
Hier werden lediglich zwei Datentypen verwendet (Text und Boolean), jegliche Datenkonvertierung kostet unnötige Zeit.
«Hole aus einer Datenbank mal 100.000 Zahlen und schreibe sie in Excel Zellen»
Mach ich doch glatt!
Zunächst fülle ich eine "Datenbank" aka Matrix mit 100.000 Zufallszahlen zwischen 0 und 100.000 mit zwei Nachkommastellen:
Sub FillIt()

With Range("A1:J10000")
.Formula = "=ROUND(RAND()*100000,2)"
.Copy: .PasteSpecial xlPasteValues
End With
End Sub

Jetzt lese ich die 100.000 Zellen in ein Array ein und schreibe dieses ab L1 wieder ins Blatt:
Sub Rewrite()

Dim arr, Start#
arr = Cells(1).CurrentRegion
Start = Timer
Range("L1").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
Debug.Print Timer - Start
End Sub

Dauer: 0,1 Sekunden

Und Deinen letzten Satz kannst Du nicht wirklich ernst meinen.
Eine echte relationale Datenbank liest benötigte Daten sequenziell ein.
Excel lädt beim Öffnen einer Mappe den gesamten Inhalt in den Arbeitsspeicher.

Gruß Ralf
Anzeige
Je nach Komplexität ist das oder das sinnvoll
14.04.2026 13:58:41
Marc
Das in UserForms sehr viel explizite Umwandlung statt finden müssen, steht außer Frage, allerdings sehe ich das mitunter als Vorteil und nicht als Nachteil.

Und Das lesen/schreiben als Excel Worksheets dauert einfach viel zu lange. Da bin ich deutlich schneller wenn ich diese in ein Array lese, einer Listbox in einer UserForm, und erst wenn ich sie final ausgeben will, in ein Worksheet einlese.
Zudem sind UserForms deutlich weniger Benutzerfehler anfällig , als einzelne Excel Formulare, und je nach Komplexität der Daten und Datenbearbeitung, viel einfach nach zu vollziehen wo ein Fehler entstanden ist.

Ich habe damals bei einem Projekt extra UserForms genutzt, weil ich da feststellen konnte wie langsam eine Bearbeitung in einer Worksheets selber ist.

Hierbei ging es um die Auswertung von ca. 5000 Datensätzen mit jeweils ca. 128 Merkmalen , die so bearbeitet werden mussten, das am Ende Ein Übersicht herauskam, das zu sehen war, in welchem Bereich der Firma, welcher Mitarbeiter in welchem Monat mit wieviel % arbeitet, dazu noch einige andere Dinge, wie Qualifikation, Fortbildungen Ein/Austritt etc..

Zum Einen habe ich dies direkt über Worksheets machen lassen, das das Ergebnis dann jeweils direkt in eine Ergebnistabelle reingeschrieben wurde und einmal habe ich die gesamten Daten in eine UserForm entsprechend eingelesen und dann abgearbeitet, und erst am Ende in die Ergebnistabelle rein schreiben lassen..

Das Ergebnis war, das ich über die UserForm pro Bereich (jeweils eine eigene Ergebnistabelle) weniger als 15 Sekunden gebraucht hat, während es direkt von Worksheet zu Worksheet (mit den gleichen Algorithmen, nur eben der Datenurpsrung war anders) pro Bereich mehr als 2 Minuten gedauert hat, was dann mit Anstieg der Datensätze deutlich zunahm .. Das zeigt einfach das Das lesen/schreiben in Worksheets deutlich langsamer ist.


Natürlich hat auch das direkt Arbeiten in Excel seine Berechtigung und ist eine tolle Sache, aber per se UserForms als Spielerei ab zu stempeln, halte ich für nicht richtig.
Anzeige
Userformtextboxen addieren
12.04.2026 14:21:51
GerdL
Moin
Dim zus As Double


If Not IsNumeric(TextBox1) Then TextBox1 = 0
If Not IsNumeric(TextBox2) Then TextBox2 = 0

zus = Application.Sum(TextBox1 * 1, TextBox2 * 1)

If zus > 6 Then TextBox2 = 0



Gruß Gerd
Anzeige
IsNumeric und Cint
13.04.2026 06:23:26
Marc
logischerweise, denn der Wert im Textfeld ist ein String keine Zahl..

du musst sie Umwandeln..

z.B. mit Cint(TextBox1.Value)

nur wenn da statt einer Zahl ein Text steht (z.B. "hallo") stürzt das Programm ab, das musst du abfangen, oder vorher Prüfen mit

IsNumeric(TextBox1.Value)
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18