Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Prüfen ob TextBox vorhanden ist

Prüfen ob TextBox vorhanden ist
04.09.2018 08:05:16
Steph
Guten morgen,
ich möchte prüfen ob eine TextBox vorhanden ist oder nicht. Die TextBoxen heißen alle gleich: TextBox1, TextBox2, TextBox3, ... und können automatisch per Button auf eine UF eingefügt werden.
Im nächsten Schritt möchte ich nun einen weiteren Button auf die UF einbauen, der den Inhalt der entsprechenden TextBoxen an eine Excel Tabelle in eine fest definierte SPalte weiter gibt.
Meine Idee:
Private Sub CommandButton_Einfügen_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(last, 1).Value = UserForm6.Controls("TextBox1").Text
.Cells(last, 2).Value = UserForm6.Controls("TextBox2").Text
End With
MsgBox ("Die Daten wurden erfolgreich in die Datenbank eingegeben!")
Unload UserForm1
Unload UserForm6
ActiveWorkbook.Save
End Sub
Das klappt auch wunderbar, wenn man denn nur die beiden TextBoxen 1 & 2 hat. Hat man nur TextBox1 klappt das ganze nicht mehr daher meine Idee:
Private Sub CommandButton_Einfügen_Click()
Dim last As Long
With Sheets("Datenbank")
last = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
If TextBox1 = True Then
.Cells(last, 1).Value = UserForm6.Controls("TextBox1").Text
Else
End If
If TextBox2 = True Then
.Cells(last, 2).Value = UserForm6.Controls("TextBox2").Text
Else
End If
End With
MsgBox ("Die Daten wurden erfolgreich in die Datenbank eingegeben!")
Unload UserForm1
Unload UserForm6
ActiveWorkbook.Save
End Sub
ICh wollte also überprüfen ob die TextBoxen vorhanden sind und falls ja, sollen die Daten weitergegeben werden, falls nein eben nicht. Allerdings funktionert das ganze mal wieder nicht :(
Über Ideen wäre ich sehr dankbar!
LG
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: On Error Resume Next
04.09.2018 10:03:29
Steph
Super danke Matthias das sieht schon gut aus! Da tritt jedoch auch das Problem noch auf, dass bei mir auch aufgetreten ist.
Wenn ich beispielsweise 1x "Erstellen" drücke und dann "in Tabelle" wird dort "Text1" eingetragen. Wenn ich dann drei TextBoxen erstelle und das in die Tablle eintragen lasse, wird die erste Zeile mit "Text1" überschrieben. Hast du da auch noch eine Idee, wie man das verhindern könnte?
Lg Steph
Anzeige
ändere die 2 in 1
04.09.2018 10:08:58
Matthias
Hallo
statt: last = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
eben: last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Gruß Matthias
AW: ändere die 2 in 1
04.09.2018 10:11:31
Steph
Perfekt so passt es! D.h. die Zahlen 2,1 sind die entsprechenden Referenzspalten in denen geschaut wird ob bereits ein Eintrag vorhanden ist?
Lg Steph
Anzeige
Richtig ... owT
04.09.2018 10:17:16
Matthias
AW: Richtig ... owT
04.09.2018 10:17:46
Steph
SUper vielen lieben Dank dir ! :-)
AW: Prüfen ob TextBox vorhanden ist
04.09.2018 09:57:52
ChrisL
Hi Steph
Die Anzahl TextBoxen müsste bereits bekannt sein (intAnzahl als Public Variable).
https://www.herber.de/forum/messages/1642593.html
Sinngemäss...
For i = 1 To intAnzahl
.Cells(last, i) = Controls("TextBox" & i)
Next i
cu
Chris
Anzeige
AW: Prüfen ob TextBox vorhanden ist
04.09.2018 10:09:46
Steph
Hey Chris,
danke für deine Antwort. Tatsächlich war das auch meine erste Überlegung heute Morgen, allerdings führt das zu einem Lauzeitfehler. Er bekommt es irgendwie nicht hin den entsprechenden Wert aus der richtigen TextBox auszulesen.
AW: Prüfen ob TextBox vorhanden ist
04.09.2018 12:39:56
ChrisL

For x = 1 To intAnzahl - 1
.Cells(last, x).Value = UserForm6.Controls("TextBox" & x).Text
Next x

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

TextBoxen in Excel VBA überprüfen und verwalten


Schritt-für-Schritt-Anleitung

Um zu überprüfen, ob TextBoxen in einem UserForm vorhanden sind und deren Inhalte in eine Excel-Tabelle zu übertragen, kannst du den folgenden Code verwenden. Dieser Code nimmt an, dass die TextBoxen in einer fortlaufenden Reihenfolge nummeriert sind.

  1. Erstelle eine UserForm mit mehreren TextBoxen (z.B. TextBox1, TextBox2, usw.) und einem Button zum Einfügen der Daten.
  2. Füge den folgenden VBA-Code in das Code-Fenster der UserForm ein:
Private Sub CommandButton_Einfügen_Click()
    Dim last As Long
    Dim i As Integer
    Dim intAnzahl As Integer
    intAnzahl = 3 ' Anzahl der TextBoxen

    With Sheets("Datenbank")
        last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 ' Letzte Zeile in Spalte 1 finden
        For i = 1 To intAnzahl
            If Not IsEmpty(UserForm6.Controls("TextBox" & i).Text) Then
                .Cells(last, i).Value = UserForm6.Controls("TextBox" & i).Text
            End If
        Next i
    End With

    MsgBox ("Die Daten wurden erfolgreich in die Datenbank eingegeben!")
    Unload UserForm1
    Unload UserForm6
    ActiveWorkbook.Save
End Sub

Häufige Fehler und Lösungen

Fehler 1: Laufzeitfehler beim Zugriff auf TextBoxen.
Lösung: Stelle sicher, dass die Anzahl der TextBoxen korrekt definiert ist. Wenn beispielsweise nur zwei TextBoxen vorhanden sind, ändere intAnzahl = 3 auf intAnzahl = 2.

Fehler 2: Daten werden in die falsche Zeile geschrieben.
Lösung: Achte darauf, dass die richtige Spalte für last definiert ist. Verwende .Cells(last, 1) für die erste Spalte.


Alternative Methoden

Eine alternative Methode zur Überprüfung auf vorhandene TextBoxen ist die Verwendung von On Error Resume Next. Dieser Ansatz ermöglicht es dir, Fehler beim Zugriff auf nicht vorhandene TextBoxen zu ignorieren:

Dim textValue As String
On Error Resume Next
textValue = UserForm6.Controls("TextBox1").Text
On Error GoTo 0

Praktische Beispiele

Hier ist ein Beispiel, wie du die TextBoxen dynamisch verwalten kannst. Wenn du die Anzahl der TextBoxen anpasst, funktioniert der Code weiterhin:

Private Sub CommandButton_Einfügen_Click()
    Dim last As Long
    Dim i As Integer
    Dim intAnzahl As Integer
    intAnzahl = 5 ' z.B. 5 TextBoxen

    With Sheets("Datenbank")
        last = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        For i = 1 To intAnzahl
            If Not UserForm6.Controls("TextBox" & i) Is Nothing Then
                .Cells(last, i).Value = UserForm6.Controls("TextBox" & i).Text
            End If
        Next i
    End With
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung, um sicherzustellen, dass deine VBA-Anwendung robust ist.
  • Halte die UserForm einfach und übersichtlich, um die Benutzerfreundlichkeit zu erhöhen.
  • Nutze Public Variablen, um die Anzahl der TextBoxen dynamisch zu verwalten und um sie an verschiedenen Stellen im Code zu verwenden.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der TextBoxen dynamisch festlegen?
Du kannst eine Variable wie intAnzahl definieren und diese anpassen, wenn du neue TextBoxen hinzufügst.

2. Was ist der Unterschied zwischen .Value und .Text?
.Value gibt den in der Zelle gespeicherten Wert zurück, während .Text den aktuell angezeigten Text in der UserForm wiedergibt. In den meisten Fällen kannst du beides verwenden, jedoch ist .Value oft die bessere Wahl für die Datenübertragung in eine Tabelle.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige