Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
380to384
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
380to384
380to384
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nach Übernahme aus TextBox neue Zeile

Nach Übernahme aus TextBox neue Zeile
15.02.2004 12:01:33
Benjamin
Hallo Forum,
einen schönen Sonntag wünsche ich euch.
Zu meinem Problem:
-----------------------------
Über meine UserForm1 sollen nach Klick auf den CommandButton1 Werte aus 17 TextBoxen (1-17) und sieben CheckBoxen (1-7) in die Tabelle1 Zellen B8 bis Y8 eingefügt werden.
Anschliessend sollen die TextBoxen und CheckBoxen wieder geleert werden um neue Werte eingeben zu können.
Diese Werte sollen nach Klick auf CommandButton1 dann in die nächste Zeile der Tabelle (also in die Zellen B9 bis Y9) geschrieben werden usw..
Die TextBoxen 1 - 5 müssen als Pflichtfelder grundsätzlich ausgefüllt werden. Wird eine dieser TextBoxen nicht ausgefüllt, soll per MessageBox auf die Pflichteingabe hinweisen.
Von den CheckBoxen 1 - 7 muss zumindest eine aktiviert sein, ansonsten soll per MessageBox darauf hingewiesen werden.

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt und ihr könnt einem VBA-Laien mit einem Code-Beispiel weiterhelfen???
Grüsse ans Forum,
Benny

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

Betreff
Datum
Anwender
Anzeige
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 12:17:10
Nepumuk
Hallo Benny,
dein Beispiel:

Option Explicit
Private Sub CommandButton1_Click()
Dim intIndex As Integer, bolausgefüllt As Boolean, lngleereZeile As Long
For intIndex = 1 To 17
If Controls("TextBox" & CStr(intIndex)) = "" Then
MsgBox "Textbox leer.", 48, "Hinweis"
Exit Sub
End If
Next
For intIndex = 1 To 7
If Controls("CheckBox" & CStr(intIndex)) = True Then bolausgefüllt = True: Exit For
Next
If Not bolausgefüllt Then
MsgBox "Checkbox leer.", 48, "Hinweis"
Exit Sub
End If
With Worksheets("Tabelle1")
lngleereZeile = .Cells(65536, 1).End(xlUp).Row + 1
If lngleereZeile < 8 Then lngleereZeile = 8
For intIndex = 1 To 17
.Cells(lngleereZeile, intIndex + 1) = Controls("TextBox" & CStr(intIndex))
Controls("TextBox" & CStr(intIndex)) = ""
Next
For intIndex = 1 To 7
.Cells(lngleereZeile, intIndex + 18) = Controls("CheckBox" & CStr(intIndex))
Controls("CheckBox" & CStr(intIndex)) = False
Next
End With
End Sub


Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk
Anzeige
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 12:20:02
Nepumuk
Hallo Benny,
in dem Moment, als ich es wegschickte, sah ich den Fehler. Die Zeile:
lngleereZeile = .Cells(65536, 1).End(xlUp).Row + 1
Musst du so ändern:
lngleereZeile = .Cells(65536, 2).End(xlUp).Row + 1
Gruß
Nepumuk
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 12:44:36
Benjamin
Hallo Nepumuk,
vielen Dank für Deine Mühe und das Code-Beispiel...
Leider klappt das noch nicht so wie gewünscht (habe das Problom wohl wieder einmal nicht richtig beschrieben, sorry!).
Also auf ein neues...
------------------------------
Die TextBoxes 1-5 sollen Pflichtfelder sein (müssen also auch ausgefüllt werden, ansonsten soll eine MessageBox erscheinen und der Cursor wieder in das Feld gesetzt werden).
Von den CheckBoxes 1-7 soll zumindest eine aktiviert sein, ansonsten soll eine MessageBox erscheinen.
Die Angaben aus den CheckBoxes sollen in der Zeile in der Tabelle1 an die Werte aus den Textboxes 1-5 anschliessen (daran erst die Werte aus den TextBoxes 6-17.
Die TextBoxes 6-17 können, müssen aber nicht ausgefüllt sein (also keine Überprüfung und MessageBox).
Nach Klick auf den CommandButton1 sollen die Werte in die Tabelle1 übernommen werden, die TextBoxes und CheckBoxes geleert und der Cursor wieder in die TextBox1 gesetzt werden.

Anzeige
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 12:52:20
Benjamin
Hallo Nepumuk,
UUUUpps, habe den falschen Button erwischt, war noch nicht fertig und wollte nur die Vorschau beenden...
Vielen Dank für Deine Mühe und das Code-Beispiel...
Leider klappt das noch nicht ganz so wie gewünscht (habe das Problom wohl wieder einmal nicht richtig beschrieben, sorry!).
Also auf ein neues...
------------------------------
Die TextBoxes 1-5 sollen Pflichtfelder sein (müssen also auch ausgefüllt werden, ansonsten soll eine MessageBox erscheinen und der Cursor wieder in das Feld gesetzt werden).
Von den CheckBoxes 1-7 soll zumindest eine aktiviert sein, ansonsten soll eine MessageBox erscheinen.
Die Angaben aus den CheckBoxes sollen in der Zeile in der Tabelle1 an die Werte aus den Textboxes 1-5 anschliessen (daran erst die Werte aus den TextBoxes 6-17.
Die TextBoxes 6-17 können, müssen aber nicht ausgefüllt sein (also keine Überprüfung und MessageBox).
Nach Klick auf den CommandButton1 sollen die Werte in die Tabelle1 übernommen werden, die TextBoxes und CheckBoxes geleert und der Cursor wieder in die TextBox1 gesetzt werden.
Eine Bitte... könntest Du den Code kommentieren, möchte gerne verstehen, was die einzelnen Zeilen bedeuten und daraus lernen.
Kannst Du den Code entsprechend umstricken???
Danke, Benny
Anzeige
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 13:24:51
Nepumuk
Hallo Benny,
der geänderte Code:

Option Explicit
Private Sub CommandButton1_Click()
Dim intIndex As Integer, bolausgefüllt As Boolean, lngleereZeile As Long
For intIndex = 1 To 5
If Controls("TextBox" & CStr(intIndex)) = "" Then
MsgBox "Textbox leer.", 48, "Hinweis"
Controls("TextBox" & CStr(intIndex)).SetFocus
Exit Sub
End If
Next
For intIndex = 1 To 7
If Controls("CheckBox" & CStr(intIndex)) = True Then bolausgefüllt = True: Exit For
Next
If Not bolausgefüllt Then
MsgBox "Checkbox leer.", 48, "Hinweis"
Exit Sub
End If
With Worksheets("Tabelle1")
lngleereZeile = .Cells(65536, 2).End(xlUp).Row + 1
If lngleereZeile < 8 Then lngleereZeile = 8
For intIndex = 1 To 5
.Cells(lngleereZeile, intIndex + 1) = Controls("TextBox" & CStr(intIndex))
Controls("TextBox" & CStr(intIndex)) = ""
Next
For intIndex = 1 To 7
.Cells(lngleereZeile, intIndex + 6) = Controls("CheckBox" & CStr(intIndex))
Controls("CheckBox" & CStr(intIndex)) = False
Next
For intIndex = 6 To 17
.Cells(lngleereZeile, intIndex + 8) = Controls("TextBox" & CStr(intIndex))
Controls("TextBox" & CStr(intIndex)) = ""
Next
End With
TextBox1.SetFocus
End Sub


Code eingefügt mit: Excel Code Jeanie
Frage mich besser nach einzelnen Zeilen die ich dir erklären soll. Code kommentieren ist nicht gerade meine Leidenschaft.
Gruß
Nepumuk
Anzeige
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 14:37:15
Benjamin
Hallo Nepumuk,
genau so ist das richtig und klappt BESTENS!!!
Darf ich trotzdem noch einmal nerven??
1. Ich möchte, das bei aktivierter CheckBox statt WAHR bzw. FALSCH ein J in der Zelle erscheint. Ist das möglich?
2. Ist es möglich, das Eingaben nur bis Zeile 107 übernommen werden und, nachdem Zeile 107 gefüllt wurde, eine MessageBox mit entsprechendem Hinweis "Keine weiteren Eingaben möglich" o. ä. erscheint?
Noch einmal DANKE!
Gruss Benny
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 15:20:09
Nepumuk
Hallo Benny,
dann so:

Option Explicit
Private Sub CommandButton1_Click()
Dim intIndex As Integer, bolausgefüllt As Boolean, lngleereZeile As Long
For intIndex = 1 To 5
If Controls("TextBox" & CStr(intIndex)) = "" Then
MsgBox "Textbox leer.", 48, "Hinweis"
Controls("TextBox" & CStr(intIndex)).SetFocus
Exit Sub
End If
Next
For intIndex = 1 To 7
If Controls("CheckBox" & CStr(intIndex)) = True Then bolausgefüllt = True: Exit For
Next
If Not bolausgefüllt Then
MsgBox "Checkbox leer.", 48, "Hinweis"
Exit Sub
End If
With Worksheets("Tabelle1")
lngleereZeile = .Cells(65536, 2).End(xlUp).Row + 1
If lngleereZeile < 8 Then lngleereZeile = 8
For intIndex = 1 To 5
.Cells(lngleereZeile, intIndex + 1) = Controls("TextBox" & CStr(intIndex))
Controls("TextBox" & CStr(intIndex)) = ""
Next
For intIndex = 1 To 7
.Cells(lngleereZeile, intIndex + 6) = IIf(Controls("CheckBox" & CStr(intIndex)), "J", "")
Controls("CheckBox" & CStr(intIndex)) = False
Next
For intIndex = 6 To 17
.Cells(lngleereZeile, intIndex + 8) = Controls("TextBox" & CStr(intIndex))
Controls("TextBox" & CStr(intIndex)) = ""
Next
End With
If lngleereZeile = 107 Then
MsgBox "Die Tabelle ist voll." & vbCrLf & "Die Eingabe wird abgebrochen.", 48, "Hinweis"
Unload Me
End If
TextBox1.SetFocus
End Sub
Private Sub UserForm_Activate()
If Worksheets("Tabelle1").Cells(65536, 2).End(xlUp).Row = 107 Then
MsgBox "Die Tabelle ist voll." & vbCrLf & "Die Eingabe wird abgebrochen.", 48, "Hinweis"
Unload Me
End If
End Sub


Code eingefügt mit: Excel Code Jeanie
Die Priüfung, ob noch etwas eingegeben werden darf, muss natürlich auch beim Aufruf des Userforms erfolgen.
Gruß
Nepumuk
Anzeige
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 15:24:00
Nepumuk
Hallo Benny,
um eine Fehlermeldung zu vermeiden muss die Zeile:
TextBox1.SetFocus
Vor die Zeile:
If lngleereZeile = 107 Then
Gruß
Nepumuk
AW: Nach Übernahme aus TextBox neue Zeile
15.02.2004 16:14:23
Benjamin
Hallo Nepumuk,
vielen Dank, das klappt 100%ig!
Noch einen schönen Sonntag!
Gruss, Benny

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige