Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textbox übergabe mit Abfrage

Textbox übergabe mit Abfrage
16.07.2006 13:21:14
Thorsten
Hallo an alle, die vor dem PC sitzen.
Bis jetzt konntet Ihr mir immer helfen, vielleicht geht dies auch jetzt ?
Die Textboxen 13 bis 20 haben feste Werte von 100,-€ bis 700,- €
Die Textboxen 21 bis 28 soll ein Datum eingetragen werden. Soweit so gut.
Nun meine Frage : Ich möchte das eine Prüfung der Textboxen 21 bis 28 erfolgt.
Wenn in Textbox 26 bis 28 kein Datum eingetragen wurde soll der Betrag von von Textbox 17 bis 20 nicht eingetragen werden und dies ohne Fehlermeldung.Könntet Ihr mir hierbei helfen ? Wenn möglich währ super wenn eine Msg anzeige kommen würde nach Eintrag das nur die Zeile von bis eingetragen wurde.Beginn des Eintrages ist ab Zeile 60 und max bis Zeile 74. Hier mein Beispiel:

Private Sub CommandButton14_Click()
Dim lngRow As Long
Dim intIndex As Integer
With ActiveSheet
.Unprotect Password:="xxxx"
For lngRow = 60 To .Rows.Count
If Trim$(.Cells(lngRow, 1).Text) = "" Then Exit For
Next
.Cells(lngRow, 4).Value = CDbl(Me.TextBox13)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox14)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox15)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox16)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox17)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox18)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox19)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox20)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 3).Value = CDate(TextBox21)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox22)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox24)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox25)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox26)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox27)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox28)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Protect Password:="xxxx"
End With
For intIndex = 21 To 28
Controls("TextBox" & CStr(intIndex)).Text = ""
Next
End Sub

Kann mir einer helfen?
Danke schon im voraus. Gruß Torte

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox übergabe mit Abfrage
17.07.2006 11:22:59
ChrisL
hallo Thorsten
Aus deinem Code werde ich nicht schlau, da du mehrfach die gleiche Zelle überschreibst, aber ich muss ja nicht alles verstehen.
Zu deiner Frage:
If IsDate(TextBox26) And IsDate(TextBox27) And IsDate(TextBox28) Then
' mach was
End If
Gruss
Chris
AW: Textbox übergabe mit Abfrage
17.07.2006 13:34:19
Thorsten
Hallo Chris, leider kann ich mit deiner Antwort nicht all zu viel anfange, da ich zwar VBA umsetzen kann oder umändern kann, wenn ich eine Vorlage habe aber das wars auch schon. VBA nein. Ich danke Dir trotzdem für deine Hilfe.
Gruß Torte
AW: Textbox übergabe mit Abfrage
17.07.2006 15:02:04
ChrisL
Hallo Torte
Dort wo "mach was" steht, kommt dein bestehender Code rein. Wenn die Bedingung nicht erfüllt ist, geschieht nix, ansonsten wird dein Code wie bisher ausgeführt.
Betr. Vorschlag von fcs. Entweder Option Explicit entfernen oder besser die Variablen deklarieren:
Dim boTextBox26 As Boolean, boTextBox27 As Boolean, boTextBox28 As Boolean
Gruss
Chris
Anzeige
AW: Textbox übergabe mit Abfrage
17.07.2006 15:23:55
Thorsten
Hallo Chris,
ich sage nur, ach du grünenneune ! :-))
Ich habe Option Explicit entfernt, jetzt wird es auch eingetrage, aber nur in Spalte 60 egal wie viel Textboxen ich eintrage. Mist, so sollte es nicht sein. Ich habe mich doch zu blöd angestellt um die Sache zu erklären. :-((
Es sollte aber so sein das Eingabe Textbox13 zeile 60 Textbox14 Zeile 61 usw.
Könntest du mir da nochmal helfen ?
Gruß Torte
AW: Textbox übergabe mit Abfrage
17.07.2006 15:46:35
ChrisL
Hallo Torsten
Dachte mir schon, dass etwas nicht stimmen kann :-)
Ungetestet folgender Versuch:

Private Sub CommandButton14_Click()
If IsDate(TextBox26) And IsDate(TextBox27) And IsDate(TextBox28) Then
Dim lngRow As Long
Dim intIndex As Integer
With ActiveSheet
.Unprotect Password:="xxxx"
For lngRow = 60 To .Rows.Count
If Trim$(.Cells(lngRow, 1).Text) = "" Then Exit For
Next
For intIndex = 13 To 28
Select Case intIndex
Case Is <= 20
.Cells(intIndex + 47, 4) = Controls("TextBox" & intIndex)
.Cells(intIndex + 47, 4).NumberFormat = "0.00€"
Case Else
.Cells(intIndex + 47, 3) = Controls("TextBox" & intIndex)
.Cells(intIndex + 47, 3).NumberFormat = "dd/mm/yyyy"
Controls("TextBox" & intIndex) = ""
End Select
Next intIndex
.Protect Password:="xxxx"
End With
End If
End Sub

So ganz richtig wird es allerdings noch nicht sein. Ist es so, dass TextBox13-20 und TextBox21-28 zusammengehören also 13 zu 21, 14 zu 22 etc. Wie wo sollen die genau in die Tabelle geschrieben werden?
Gruss
Chris
Anzeige
AW: Textbox übergabe mit Abfrage
17.07.2006 15:50:47
Thorsten
Hallo Chris,
ja du siehst das richtig, Textbox13 zu 21 usw.
Danke für deine hilfen.
Ich teste mal den Code gleich aus.
Bis gleich Torte
AW: Textbox übergabe mit Abfrage
17.07.2006 15:56:50
Thorsten
Hallo Chris,
habe es getestet, es geht nicht.:-(((
Gruß Torte
AW: Textbox übergabe mit Abfrage
17.07.2006 16:44:04
ChrisL
Hallo
Bei mir gehts :-)
WAS geht nicht? Evtl. keine Datumswerte in 26-28 eingetragen?
Noch ein Versuch (betr. 13 zu 21 etc.):

Private Sub CommandButton14_Click()
If IsDate(TextBox26) And IsDate(TextBox27) And IsDate(TextBox28) Then
Dim lngRow As Long
Dim intIndex As Integer
With ActiveSheet
.Unprotect Password:="xxxx"
For lngRow = 60 To .Rows.Count
If Trim$(.Cells(lngRow, 1).Text) = "" Then Exit For
Next
For intIndex = 13 To 20
.Cells(intIndex + 47, 4) = Controls("TextBox" & intIndex)
.Cells(intIndex + 47, 4).NumberFormat = "0.00€"
.Cells(intIndex + 47, 3) = Controls("TextBox" & intIndex + 8)
.Cells(intIndex + 47, 3).NumberFormat = "dd/mm/yyyy"
Controls("TextBox" & intIndex + 8) = ""
Next intIndex
.Protect Password:="xxxx"
End With
End If
End Sub

Gruss
Chris
Anzeige
AW: Textbox übergabe mit Abfrage
17.07.2006 18:21:39
Thorsten
Hallo Chris,
ich möchte ungerne jemanden auf den Nerv gehen, selbst bei dein neuen Code "" geht nicht "" ich klicke auf Commandbutton14 und in den Textboxen sind die Daten trin, aber es tut sich nichts. Meine Vermutung :-) fehlt da vielleicht eine anweisung für den Button 14?
Gruß Torte
Userform -Bildlich
17.07.2006 18:32:58
Thorsten
Hier mal ein Bild Chris, damit du dir vorstellen kannst wie die Userform aussieht:
Danke dennoch für deine Hilfe.
Userbild
Das alles ist auf MultiPage1
Gruß Torte
AW: Textbox übergabe mit Abfrage
18.07.2006 10:53:26
ChrisL
Hallo Thorsten
Das Bild hilft mir leider nicht weiter, weil keine Eigenschaften etc. erkennbar sind. Ein kleine Beispieldatei wäre einiges nützlicher, insbesondere da ich zu faul bin, ein Userform mit 28 TextBoxen zu testzwecken zu erstellen :-)
Könntest mal folgendes testen:

Private Sub CommandButton14_Click()
If IsDate(TextBox26) And IsDate(TextBox27) And IsDate(TextBox28) Then
MsgBox "Hallo Welt"
End If
End Sub

Gruss
Chris
Anzeige
AW: Textbox übergabe mit Abfrage
18.07.2006 12:48:47
Thorsten
Hallo Chris,
aus rechtlichen Gründen mußte ich einiges Entfernen, aber hier mal eine Beispieldatei. Die Textboxennummer haben sich aber hier geändert.
https://www.herber.de/bbs/user/35172.xls
Ich hoffe das es dir hilft.
Gruß Torte
AW: Textbox übergabe mit Abfrage
18.07.2006 18:57:14
ChrisL
Hallo
Vorweg, den TabIndex (Tabulator-Reihenfolge, Eigenschaften TextBox) nicht vergessen in Ordnung zu bringen.
Kernproblem ist deine Nummerierung (TextBox22 zu 21, 25 zu 24, 27 zu 26 und 28 zu 23). Da es nicht interessant ist, jede TextBox einzeln zu programmieren, kommst du um eine Umbenennung der TextBoxen nicht rum. Ich würde TBDatum1, TBDatum2 etc. und TBPreis1, TBPreis2 etc. bis Nummer 8 als Namen wählen.
Folgender Vorschlag als Code:

Private Sub CommandButton14_Click()
Dim LetzteZeile As Long
Dim iTB As Byte
For iTB = 1 To 8
If Controls("TBDatum" & iTB) <> "" Then
If Not IsDate(Controls("TBDatum" & iTB)) Then
MsgBox "Die TextBox " & iTB & " enthält kein Datum. Bitte korrigieren.", vbInformation, "Programmabbruch"
Controls("TBDatum" & iTB).SetFocus
Exit Sub
End If
End If
Next iTB
With ActiveSheet
LetzteZeile = .Range("D74").End(xlUp).Row
If LetzteZeile < 59 Then LetzteZeile = 59
For iTB = 1 To 8
If Controls("TBDatum" & iTB) = "" Then Exit Sub
If .Range("D74") <> "" Then
MsgBox "Tabelle ist voll. Es können keine weiteren Daten übertragen werden.", vbCritical, "Fehler"
Exit Sub
Else
.Cells(LetzteZeile + iTB, 4) = CDate(Controls("TBDatum" & iTB))
.Cells(LetzteZeile + iTB, 5) = Controls("TBPreis" & iTB)
Controls("TBDatum" & iTB) = ""
End If
Next iTB
End With
End Sub

N.b. falls Beitrag im Forums-Archiv verschwindet, eröffne einfach einen neuen, mit Link auf den alten Beitrag wenn es geht.
Gruss
Chris
Anzeige
@ Chris
18.07.2006 20:41:44
Thorsten
Super Chris,
das ist genau das was ich wollte. Sorry war ja mein Fehler hätte mich doch besser ausdrücken sollen.
Ich wünsche dir noch eine schöne Woche.
Gruß Torte
Danke für die Rückmeldung o.T.
19.07.2006 10:56:04
ChrisL
Gruss
Chris
AW: Textbox übergabe mit Abfrage
17.07.2006 12:02:17
fcs
Hallo Thorsten,
man kann die Eingabe in die Textboxen mit IsDate(Me.Textbox21.Value) auf Datumseingabe überprüfen.
Dein Makro könnte dann etwa so aussehen:

Private Sub CommandButton14_Click()
Dim lngRow As Long
Dim intIndex As Integer
With ActiveSheet
.Unprotect Password:="xxxx"
For lngRow = 60 To .Rows.Count
If Trim$(.Cells(lngRow, 1).Text) = "" Then Exit For
Next
'Überprüfung Datumseingaben Textbox 21 bis 28
For intIndex = 21 To 28
Select Case intIndex
Case 21 To 25
If Not IsDate(Me.Controls("TextBox" & CStr(intIndex)).Value) Then
MsgBox "In Textbox: " & Me.Controls("TextBox" & CStr(intIndex)).Name & " ist kein Datum eingegben!"
Exit Sub
End If
Case 26
If Not IsDate(Me.Controls("TextBox" & CStr(intIndex)).Value) Then
MsgBox "In Textbox: " & Me.Controls("TextBox" & CStr(intIndex)).Name & " ist kein Datum eingegben!"
boTextbox26 = False
Else
boTextbox26 = True
End If
Case 27
If Not IsDate(Me.Controls("TextBox" & CStr(intIndex)).Value) Then
MsgBox "In Textbox: " & Me.Controls("TextBox" & CStr(intIndex)).Name & " ist kein Datum eingegben!"
boTextbox27 = False
Else
boTextbox27 = True
End If
Case 28
If Not IsDate(Me.Controls("TextBox" & CStr(intIndex)).Value) Then
MsgBox "In Textbox: " & Me.Controls("TextBox" & CStr(intIndex)).Name & " ist kein Datum eingegben!"
boTextbox28 = False
Else
boTextbox28 = True
End If
Case Else
'do nothing
End Select
Next
.Cells(lngRow, 4).Value = CDbl(Me.TextBox13)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox14)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox15)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox16)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 3).Value = CDate(TextBox21)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox22)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox24)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox25)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
'Zellen nur ausfüllen wenn datum in Textboxen 26 bis 28 eingetragen
If boTextbox26 = True And boTextbox27 = True And boTextbox28 = True Then
.Cells(lngRow, 4).Value = CDbl(Me.TextBox17)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox18)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox19)
.Cells(lngRow, 4).NumberFormat = "0.00€"
.Cells(lngRow, 4).Value = CDbl(Me.TextBox20)
.Cells(lngRow, 3).Value = CDate(TextBox26)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox27)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
.Cells(lngRow, 3).Value = CDate(TextBox28)
.Cells(lngRow, 3).NumberFormat = "dd/mm/yyyy"
End If
.Protect Password:="xxxx"
End With
For intIndex = 21 To 28
Controls("TextBox" & CStr(intIndex)).Text = ""
Next
End Sub

Gruß
Franz
Anzeige
AW: Textbox übergabe mit Abfrage
17.07.2006 13:29:37
Thorsten
Hallo Franz,
soweit wurde es von Dir richtig verstanden.
Leider kommt eine Fehlermeldung: Fehler beim Kompilieren
Angezeit wird (bo Textbox 26 = False)
Um es aber genauer zu beschreiben, die jeweilige Textbox 13 bis 20 soll ein Datum rein OK, nun möchte ich das , das Makro erkennt wenn z.B. das nur Textbox13 ein Datum hat, das nur der Betrag aus Textbox21 und das Datum aus Textbox21 in die Spalte eingetragen wird.
Danke das du dich meiner angenommen hast und mir helfen willst.
Gruß Torte

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige