PDA

Vollständige Version anzeigen : Datum übernehmen ! brauche dringend Hilfe


Aang39
23.07.2012, 06:14
Hallo Gemeinde ...

Ich hab folgendes Problem.

Ich habe 2 UserFormen... nun will ich das er prüft ob in der textBox ( 1 ) ein Datum vorhanden ist ( wobei währe nett wenn mir jemand texten könnte wie ich die Box nur für ein Datum frei gebe ).

Also Datum in TextBox (1) .... dann "klick" auf CheckBox ( 2 ) und dann kommt eine UserForm ( 3 ).
In UserForm ( 3 ) soll jetzt geprüft werden ob TextBox ( 1 ) gefüllt ist... wenn ja soll er je nach anZahl den Inhalt in das Tabellenblatt eintragen

bei 2 = Zelle B16 & B17
bei 3 = Zelle B16 & B17 & B18 ... usw

Grafik im Anhang !

Hier der Code :

Public Sub Kopieren()

Option_Explicit
Private Sub Datum()


If UserForm1.TextBox9.Text = "" Then
MsgBox ("Geben Sie zuerst den Termin an ")
UserForm1.CheckBox9 = False

ElseIf TextBox1.Text = "2" Then
Worksheets("GNW").Cells(17, 2) = UserForm1.TextBox9.Text
Worksheets("GNW").Range("C17") = UserForm1.TextBox10.Text


ElseIf TextBox1.Text = "3" Then
Range("B17:B18") = UserForm1.TextBox9.Text
Range("C17:C18") = UserForm1.TextBox10.Text


ElseIf UserTextBox1.Text = "4" Then
Range("B17:B18:B19") = UserForm1.TextBox9.Text
Range("C17:C18:C19") = UserForm1.TextBox10.Text


ElseIf TextBox1.Text = "5" Then
Range("B17:B18:B19:B20") = UserForm1.TextBox9.Text
Range("C17:C18:C19:C20") = UserForm1.TextBox10.Text


ElseIf TextBox1.Text = "6" Then
Range("B17:B18:B19:B20:B21") = UserForm1.TextBox9.Text
Range("C17:C18:C19:C20:C21") = UserForm1.TextBox10.Text



UserForm1.CheckBox9 = False

End If




'Unload Me

End Sub

Vielen Dank für eure Hilfe ..

(Sorry für meine schreibweise ... heute ist Montag :( )

Hajo_Zi
23.07.2012, 06:17
Dir ist schon klar das Du Text in die Zellen schreibst?
Option Explicit
Dim BoEnter As Boolean

Private Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' erstellt von HajoZiplies@web.de Stand 01.08.03
' Datumseingabe 01.01.03;1.1.03 oder komlettes Jahr
' Eingabe des Tages und des Monat zweistellig werden die Punkte automatisch gesetzt
' sie können nur gelöscht durch markierung des punktes und der Zahl davor
' Buchstaben werden ausgeschlossen, nur Zahlen und Punkt
' die Überprüfung ob Datum erfolgt in Private Sub TextBox6_AfterUpdate()
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(".")
If Len(TextBox6) = 0 Then
KeyAscii = 0
Else
If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) = 2 Then
KeyAscii = 0
ElseIf Len(TextBox6) > 1 Then
If Mid(TextBox6, Len(TextBox6), 1) = "." Then KeyAscii = 0
Else
KeyAscii = Asc(".")
End If
End If
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub TextBox6_Change()
If BoEnter = True Then Exit Sub
If Len(TextBox6) = 2 Then
If InStr(TextBox6, ".") = 0 And BoEnter = False Then TextBox6 = TextBox6 & "."
ElseIf Len(TextBox6) = 5 Then
If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) < 2 Then
TextBox6 = TextBox6 & "."
End If
End If
End Sub

Private Sub TextBox6_AfterUpdate()
BoEnter = True
If Right(TextBox6, 1) = "." Then TextBox6 = Mid(TextBox6, 1, Len(TextBox6) - 1)
' Jahreszahl vom aktuellen Jahr ergänzen falls nicht vorhanden
If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) = 1 Then
TextBox6 = TextBox6 & "." & Year(Date)
End If
If IsDate(TextBox6.Text) Then
If Format(CDate(TextBox6.Value), "dd.mm.yy") <> TextBox6 Then
MsgBox "Das Datum wurde übersetzt"
End If
TextBox6 = Format(CDate(TextBox6.Value), "dd.mm.yy")
Else
TextBox6 = ""
End If
BoEnter = False
End Sub


<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm" onclick="window.open(this.href);return false"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Aang39
23.07.2012, 08:55
Dir ist schon klar das Du Text in die Zellen schreibst?


Ja ich weiss ..... aber Egal ob ich xxx.Value oder xxx.Text nehme. Er trägt es nicht in die angegebenen Zeilen ein !
Naja , nicht ganz richtig, er hat es 1x gemacht u8nd danach nie wieder - deshalb bin ich auch schon mittelschwer frustriert :mad:

Danke für das DatumsProblem :)

Jetzt brauch ich nur noch zu dem eigendlichen Problem weitere Hilfe ....

Hajo_Zi
23.07.2012, 18:26
Ich baue keine Datei nach, die Zeit hat schon jemand investiert. Ein Link zur Datei wäre nicht schlecht.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Aang39
24.07.2012, 06:00
Ich baue keine Datei nach, die Zeit hat schon jemand investiert. Ein Link zur Datei wäre nicht schlecht.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Guten Morgen ... was meinst du damit ? ( steh etwas auf´n Schlauch )
... die code ist von mir und nicht "geklaut" :(

.... ich will das ja auch lernen und nicht irgendwelchen Code zusammen setzen.
Darum würde mr ja auch schon ein Hinweiss reichen .....

Lieben Dank

hary
24.07.2012, 06:18
Hallo
Was Hajo meint: Lade eine Bsp.-Mappe hier hoch. Ohne sensibele Daten.
Sonst muss man deine Mappe nachbauen und diese sieht garantiert anders aus.
gruss hary

Aang39
24.07.2012, 10:28
Achso ... Super Entschuldigung .. hab ich falsch verstanden !

Dann geb ich die euch mal .....

- UserBox4 --> TextBox 1

Vielen Dank für eure Hilfe ....

P.S. Tipp von unserer EDV = die If Schleife "stört" , wie aber genau weiss er auch nicht :(

Hasso
24.07.2012, 13:24
Hallo Aang,

dir wurde doch schon von Hajo gesagt, dass in deinen Textboxen Texte stehen (und keine Datumswerte).

In deine Tabelle sollen aber Datumswerte eingetragen werten. Also muss das Ergebnis der Textbox umgewandelt werden etwa so:

ElseIf TextBox1.Value = 2 Then
Worksheets("GNW").Range("B17") = DateValue(UserForm1.TextBox9.Value)
Worksheets("GNW").Range("C17") = DateValue(UserForm1.TextBox10.Value)

ElseIf TextBox1.Text = "3" Then
Range("B17:B18") = DateValue(UserForm1.TextBox9.Text)
Range("C17:C18") = DateValue(UserForm1.TextBox10.Text).

Dann werden sie auch eingetragen.

Aang39
24.07.2012, 13:40
@ Hasso ...

Nein , tut er nicht ! Irgendwie fühlt die TextBox in UF 4 sich garnicht angesprochen ..... da kann ich alles eintragen ...... :mad:

Ich komm einfach nicht weiter .... kann doch nicht sein :(

Hasso
24.07.2012, 14:11
Hallo Aang,

dieser Code

Public Sub Kopieren()

Option_Explicit
Private Sub Datum()


ist doch auch völlig daneben! Du öffnest die Sub Kopieren(), zwei Zeilen weiter öffnest du die Sub Datum(), ohne die erste zu schließen - das kann ja auch nicht funktionieren.

Außerdem schreibst du
ElseIf TextBox1 = "3" Then
Range("B17:B18") = DateValue(UserForm1Box9)
Range("C17:C18") = DateValue(UserForm1Box10)

ElseIf UserTextBox1 = "4" Then
Range("B17:B19") = DateValue(UserForm1Box9)
Range("C17:C19") = DateValue(UserForm1Box10)


Das passt auch nicht zusammen.

Aang39
24.07.2012, 18:34
@ Hasso ....

Super vielen Dank ... auch an die anderen ....

Da hab ich beim Ausprobieren wohl nicht aufgepasst , es lag am "1. Sub" :(

Hier der Code dank eurer Hilfe :

Private Sub TextBox1_Change()


If UserForm1.TextBox9.Value = "" Then
MsgBox ("Geben Sie zuerst den Termin an ")
UserForm1.CheckBox9 = False

ElseIf TextBox1.Value = 2 Then
Worksheets("GNW").Range("B17") = DateValue(UserForm1.TextBox9.Value)
Worksheets("GNW").Range("C17") = DateValue(UserForm1.TextBox10.Value)


ElseIf TextBox1.Value = 3 Then
Worksheets("GNW").Range("B17:B18") = DateValue(UserForm1.TextBox9.Value)
Worksheets("GNW").Range("C17:C18") = DateValue(UserForm1.TextBox10.Value)

ElseIf TextBox1.Value = 4 Then
Worksheets("GNW").Range("B17:B18:B19") = DateValue(UserForm1.TextBox9.Value)
Worksheets("GNW").Range("C17:C18:C19") = DateValue(UserForm1.TextBox10.Value)

ElseIf TextBox1.Value = 5 Then
Worksheets("GNW").Range("B17:B18:B19:B20") = DateValue(UserForm1.TextBox9.Value)
Worksheets("GNW").Range("C17:C18:C19:C20") = DateValue(UserForm1.TextBox10.Value)

ElseIf TextBox1.Value = 6 Then
Worksheets("GNW").Range("B17:B18:B19:B20:B21") = DateValue(UserForm1.TextBox9.Value)
Worksheets("GNW").Range("C17:C18:C19:C20:C21") = DateValue(UserForm1.TextBox10.Value)


UserForm1.CheckBox9 = False

End If


Gruß

Nachtrag :

Jetzt meckert er, was auch Begründet ist "DateValue...", wenn ich das zweite Termin Feld frei lasse !

Typen Unverträglich

Kann ich ihm irgendwie sagen das er das zweite Feld nur nehmen soll wenn was drin steht ?

Danke

Aang39
25.07.2012, 05:07
So ...

Ich hab das 2. Termin Feld jetzt einfach als Zahl deklariert .... geht doch :)

xxx.UserForm1.TextBox10.Value

Vielen Dank nochmal