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

User Form

User Form
24.05.2003 08:54:16
Peter T
Hallo,

benötige dringend Hilfe.
Wollte mir einen Code basteln mit dem ich über eine Userform
(bereits erstellt) Datum und Zeit Abfrage (textboxnamen sind Datum1 und Zeit1) formatiert (TT.MM.JJ HH:MM) in ein Feld meiner Tabelle diese Daten eintragen kann, mit Button OK und Abbruch.
Ich will diese Userform für mehrere Aufrufe nutzen (d. heißt in meiner Tabelle sind neun Button's und nach druck dieses Buttons
will ich über die UserForm das abgefragte in die Zelle über den Button (formatiert) schreiben.

Habe im Forum gesucht aber kein passendes Beispiel gefunden,
da ich im Umgang mit UserForm's leider keine Erfahrung habe
benötige ich hierzu Hilfe.

Danke Peter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: User Form
24.05.2003 09:12:19
Mike E.

Hallo Peter,

ich nehme an, die Buttons sind in die Tabelle eingebettet.
Für CommandButton1 und eine UserForm1 mit ListBox1 würde das folgendermaßen aussehen:

Private Sub CommandButton1_Click()


UserForm1.Show 'deine UserForm wird aufgerufen


End Sub


Jetzt der Code für den ComandButton auf der UserForm (habe ihn hier "cmdOK" genannt. Zeile und Spalte musst du entsprechend der gewünschten Position im Tabellenblatt anpassen. Für die Zelle A1 wäre Zeile = 1 und Spalte ebenfalls 1):


Private Sub CmdOK_Click()

ActiveSheet.Cells(Zeile, Spalte) = Userform1.Listbox1.Value
End Sub

Viele Grüße
Mike

Anzeige
Re: User Form
24.05.2003 09:13:55
Nepumuk

Hallo Peter,
deklariere dir in einem normalen Modul eine öffentliche Variable (z.B. Public Schalter as Integer). In jedem deiner Buttons in der Tabelle gibst du der Variablen "Schalter" einen anderen Wert mit. Mit diesem Wert kannst du dann in deiner Userform die Ausgabe in die Tabelle steuern.
Beispiel:

Gruß
Nepumuk

Re: User Form
24.05.2003 09:22:33
Peter T

Ja, das hört sich schon ganz gut an,
aber kann ich den Text (Datum und Zeit) in der User Form schon formatieren, (damit keine Falscheingabe gemacht wird)?
Und nochmal genau, was muß
1. im Code des Schalters (habe hier neun in jedem Tabellenblatt und das in mehreren Tabellenblättern) stehen mit dem ich die Userform aufrufe
2. und was muß im User Form stehen damit dieses die Werte formattiert einträgt gesteuert über den Button OK mit der Möglichkeit zum Abbruch ?

Komme mit den UserForms einfach noch nicht klar, sonst klappts in VB schon ganz gut.

Danke

Anzeige
Re: User Form
24.05.2003 10:15:38
Nepumuk

Hallo Peter,
habe gerade einen Anruf bekommen. Muss in die Arbeit. Melde mich heute Abend wieder.
Gruß
Nepumuk

Re: User Form
24.05.2003 21:44:22
Nepumuk

Hallo Peter,
so als beispiel mal:


Option Explicit

Private Sub CommandButton1_Click()
    Dim Ok As Boolean
    Call Datum_pruefen(Ok)
    If Not Ok Then Exit Sub
    Call Zeit_pruefen(Ok)
    If Not Ok Then Exit Sub
    Select Case Schalter
    Case 1
        Range("A1").Value = Format(Datum1.Value, "dd.mm.yyyy")
        Range("A2").Value = Format(Zeit1.Value, "hh:mm")
    End Select
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub

Private Sub Datum1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 44, 45: KeyAscii = 46 'aus Komma und Minus Punkt machen
    Case 46 'Punkt
    Case 48 To 57 'Zahlen von 0 bis 9
    Case Else: KeyAscii = 0
    End Select
End Sub

Private Sub Zeit1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 44, 45: KeyAscii = 58 'aus Komma und Minus Doppelpunkt machen
    Case 48 To 58 'Zahlen von 0 bis 9 und Doppelpunkt
    Case Else: KeyAscii = 0
    End Select
End Sub

Private Sub Datum_pruefen(Ok As Boolean)
    Dim Tag As String, Monat As String, Jahr As String
    Ok = False
    If Not IsDate(Datum1.Value) Then
        MsgBox "Datumseingabe falsch.", 48, "Hinweis"
        Datum1.SelStart = 0
        Datum1.SelLength = Len(Datum1.Value)
        Datum1.SetFocus
        Exit Sub
    End If
    Tag = Left(Datum1.Value, InStr(1, Datum1.Value, ".") - 1)
    Monat = Mid(Datum1.Value, InStr(1, Datum1.Value, ".") + 1)
    Monat = Mid(Monat, 1, InStr(1, Datum1.Value, ".") - 1)
    Jahr = Mid(Datum1.Value, Len(Tag) + Len(Monat) + 3)
    If Len(Jahr) < 4 Then Jahr = "2" & String(4 - Len(Jahr) - 1, "0") & Jahr
    Select Case CInt(Monat)
    Case 1, 3, 5, 7, 8, 10, 12
        If CInt(Tag) > 31 Then
            MsgBox "Tag falsch.", 48, "Hinweis"
            Datum1.Value = Datum1.Value
            Datum1.SelStart = 0
            Datum1.SelLength = Len(Datum1.Value)
            Datum1.SetFocus
            Exit Sub
        End If
    Case 4, 6, 9, 11
        If CInt(Tag) > 30 Then
            MsgBox "Tag falsch.", 48, "Hinweis"
            Datum1.SelStart = 0
            Datum1.SelLength = Len(Datum1.Value)
            Datum1.SetFocus
            Exit Sub
        End If
    Case 2
        If CInt(Jahr) Mod 4 = 0 And (CInt(Jahr) Mod 100 <> 0 Xor CInt(Jahr) Mod 400 = 0) Then
            If CInt(Tag) > 29 Then
                MsgBox "Tag falsch.", 48, "Hinweis"
                Datum1.SelStart = 0
                Datum1.SelLength = Len(Datum1.Value)
                Datum1.SetFocus
                Exit Sub
            End If
        Else
            If CInt(Tag) > 28 Then
                MsgBox "Tag falsch.", 48, "Hinweis"
                Datum1.SelStart = 0
                Datum1.SelLength = Len(Datum1.Value)
                Datum1.SetFocus
                Exit Sub
            End If
        End If
    End Select
    If CInt(Monat) > 12 Then
        MsgBox "Monat falsch.", 48, "Hinweis"
        Datum1.SelStart = 0
        Datum1.SelLength = Len(Datum1.Value)
        Datum1.SetFocus
        Exit Sub
    End If
    If CInt(Jahr) < CInt(Year(Date)) Then
        MsgBox "Jahr falsch.", 48, "Hinweis"
        Datum1.SelStart = 0
        Datum1.SelLength = Len(Datum1.Value)
        Datum1.SetFocus
        Exit Sub
    End If
    Datum1.Value = Format(Datum1.Value, "dd.mm.yyyy")
    Ok = True
End Sub

Private Sub Zeit_pruefen(Ok As Boolean)
    Dim Stunden As String, Minuten As String
    Ok = False
    If Not IsDate(Zeit1.Value) Then
        MsgBox "Zeiteingabe falsch.", 48, "Hinweis"
        Zeit1.SelStart = 0
        Zeit1.SelLength = Len(Zeit1.Value)
        Zeit1.SetFocus
        Exit Sub
    End If
    If InStr(1, Zeit1.Value, ":") > 0 Then
        Stunden = Left(Zeit1.Value, InStr(1, Zeit1.Value, ":") - 1)
        Minuten = Mid(Zeit1.Value, Len(Stunden) + 2)
    Else
        Stunden = Zeit1.Value
        Minuten = "00"
    End If
    If CInt(Stunden) > 23 Then
        MsgBox "Stundeneingabe falsch.", 48, "Hinweis"
        Zeit1.SelStart = 0
        Zeit1.SelLength = Len(Zeit1.Value)
        Zeit1.SetFocus
        Exit Sub
    End If
    If CInt(Minuten) > 59 Then
        MsgBox "Minuteneingabe falsch.", 48, "Hinweis"
        Zeit1.SelStart = 0
        Zeit1.SelLength = Len(Zeit1.Value)
        Zeit1.SetFocus
        Exit Sub
    End If
    Zeit1.Value = Format(Stunden & ":" & Minuten, "hh:mm")
    Ok = True
End Sub


'In einem Normalen Modul:


Option Explicit

Public Schalter As Integer

Public Sub Com1()
    Schalter = 1
    UserForm1.Show
End Sub


     Code eingefügt mit Syntaxhighlighter 2.1

Gruß
Nepumuk

Anzeige
Re: User Form
26.05.2003 13:47:58
Peter T

Hallo,

super, DANKE genau das war's.
Allerdings mußte ich das UserForm per call über den Umweg aus einem Modul aufrufen lassen, den direkt vom Code eines Arbeitsplatzes hat er mir die Variable an das UserForm nicht übergeben.

Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige