Clever-Excel-Forum

Normale Version: Tabellenblatt durch Button auf Userform anzeigen lassen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo liebe Forum-Mitglieder,

ich benötige wie Hilfe von euch.

Habe grad gelernt wie man eine Userform erstellt und wie man sie aufruft und wieder schließt ;)

Diese rufe ich im Vollbild Modus auf.
Dort sollen noch einige Sachen hinein. Bisher habe ich Buttons dort erstellt, die verschiedene Tabellenblätter aufrufen  (anzeigen) sollen.

Ich möchte jetzt die jeweiligen Buttons anklicken, das Tabellenblatt soll sich vor die Startform legen. Wenn ich das Tabellenblatt verlasse, soll es wieder zurück zur Startform gehen.

Es handelt sich in der Form um die Buttons: Samstag-Lotto-Uhr  -  Mittwochs-Lotto-Uhr   -  Kreuz-Tipp-Samstag  -  Kreuz-Tipp-Mittwoch  und Münz-Tipp

Kann mir da jemand vielleicht helfen?

Gruß
Mike

[attachment=32723]
Hallo

Die Codezeilen für die einzelnen Buttons könnten so aussehen

Code:
Private Sub CommandButton3_Click()
    On Error GoTo Fehler
    Me.Hide
    Application.EnableEvents = False
    Sheets("Samstagziehungen").Select
Fehler:
    Application.EnableEvents = True
End Sub

Private Sub CommandButton4_Click()
    On Error GoTo Fehler
    Me.Hide
    Application.EnableEvents = False
    Sheets("Mittwochsziehung").Select
Fehler:
    Application.EnableEvents = True
End Sub
'...usw.

zusätzlich in DieseArbeitsmappe ergänzen:
Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Startform.Show
End Sub


LG UweD
(30.06.2020, 13:41)UweD schrieb: [ -> ]Hallo

Die Codezeilen für die einzelnen Buttons könnten so aussehen

Code:
Private Sub CommandButton3_Click()
    On Error GoTo Fehler
    Me.Hide
    Application.EnableEvents = False
    Sheets("Samstagziehungen").Select
Fehler:
    Application.EnableEvents = True
End Sub

Private Sub CommandButton4_Click()
    On Error GoTo Fehler
    Me.Hide
    Application.EnableEvents = False
    Sheets("Mittwochsziehung").Select
Fehler:
    Application.EnableEvents = True
End Sub
'...usw.

zusätzlich in DieseArbeitsmappe ergänzen:
Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Startform.Show
End Sub


LG UweD
Hallo Uwe,

vielen Dank, habe es eingesetzt und geht auch :)
Jetzt öffnet sich beim Start der Excelmappe nicht gleich die Startform, erst wenn ich mit der Maus unten auf ein anderes Tabellenblatt klicke.

Habe die Codes von Uwe_b eingegeben....funktioniert auch.

Gibt es eine Möglichkeit schneller wieder zurück zur Startform zu kommen?

Jetzt habe ich noch eine Frage.

In der Startform ist ja der Button für den Aufruf "Neue Ziehungen eingeben"
Es wäre gut, wenn sich die Eingabeform so öffnet, das auch das Tabellenblatt sich im hinteren Bereich zeigt, damit man gleichzeitig sehen kann, ob die Werte übertragen wurden?!

Ich habe eine Tabelle für die Ziehungen "Samstag" und eine für "Mittwoch", müsste dann für dieses Vorhaben, dann Samstag und Mittwoch in einem Tabellenblatt?

Also Spalte A-J für Samstag und daneben dann L-U für Mittwoch....dann hat man beide im Blick, da die Eingabeform ja nach Samstag oder Mittwoch unterscheiden kann??

Gruß
Mike

[attachment=32736]
Hallo

zu1)

Ich hatte geschrieben, du sollst in DieseArbeitsmappe den Code ERGÄNZEN..

Du hast das Aufrufen beim Open auskommentiert. Dann startet die UF natürlich nicht mehr.
Nimm die 3 ' vorne weg.

zu 2)

Ich würde es so machen
 - beim Initialisieren der UF die Eingabefelder etc. auf Enable=false setzen. Datum offen lassen
 - nachdem das Datum komplett und geprüft ist (also so, wie du das bereits an der anderen Stelle gemacht hast), dann wird das entsprechende Blatt ausgewählt und die Felder werden freigegeben

diesen Code in CodeBereich "UF_EingabeZ"  ERGÄNZEN

Code:
Private Sub UserForm_Initialize()
    Me.tb1.Enabled = False
    Me.tb2.Enabled = False
    Me.tb3.Enabled = False
    Me.tb4.Enabled = False
    Me.tb5.Enabled = False
    Me.tb6.Enabled = False
    Me.tbSZ.Enabled = False
    Me.cbSaveZ.Enabled = False
   
End Sub

Private Sub tbDatum_Change()
    On Error GoTo Fehler
    Dim Wochentag As Integer, sSheet As String
    If Len(tbDatum) = 10 And IsDate(tbDatum) Then 'Format TT.MM.JJJJ
        Wochentag = WorksheetFunction.Weekday(CDate(tbDatum), 2)
        Select Case Wochentag
            Case 6
                sSheet = "Samstagziehungen"
          Case 3
             sSheet = "Mittwochsziehung"
            Case Else
                tbDatum.SetFocus
                MsgBox "Datum kein Mittwoch oder Samstag"
                Exit Sub
        End Select
        Application.EnableEvents = False
        Sheets(sSheet).Select
        Application.EnableEvents = True
       
        Me.tb1.Enabled = True
        Me.tb2.Enabled = True
        Me.tb3.Enabled = True
        Me.tb4.Enabled = True
        Me.tb5.Enabled = True
        Me.tb6.Enabled = True
        Me.tbSZ.Enabled = True
        Me.cbSaveZ.Enabled = True
    End If
Fehler:
    Application.EnableEvents = True
End Sub


Du kannst versuchen, deine 2. Prüfung ggf dann entfallen zu lassen.

LG UweD
Hallo UweD,

danke für deine weitere Hilfe.

Ich denke, ich habe es so gemacht wie du beschrieben hast, aber es funktioniert nicht?

Ausklammerung Code In diese Mappe wieder heraus genommen.

den Code von dir in "UF_EingabeZ" mit eingefügt.

Die Mappe startet nicht mit der Startform.
Die Tabellen zeigen sich nicht, wenn ich auf neue Ziehung aus der Startform klicke.

Gruß
Mike

Anbei meine Datei, mit den gemachten Änderungen

[attachment=32748]
zu 1)

Das sieht bei dir jetzt so aus 

Code:
Private Sub Workbook_Open()
End Sub
Startform.Show
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Startform.Show
End Sub

das erste "End Sub" ist zu viel

2)

Die Eingabeblätter erscheinen erst, wenn du ein gültiges Datum eingetragen hast. also z.b. heute 01.07.2020
Nach Eingabe der letzten Ziffer wird Mittwoch angezeigt.


Desweiteren:
Was ist der Unterschied zwischen Abbruch und Exit?

Abbruch ist noch nicht programmiert

Code:
Private Sub cbAbbruch_Click()
      Unload Me
End Sub

Und noch was:
mit Einblenden von UF_Eingabe solltest du Startform ausblenden oder?

Code:
Private Sub CommandButton1_Click()
    Me.Hide
    UF_EingabeZ.Show
End Sub


LG UweD
Hallo UweD

alles klar....geht jetzt alles.

Das mit dem doppelten End Sub habe ich vorher auch schon gesehen  Blush 

Kann ich weiter an der Mappe arbeiten.

Die vielen Dank.

Gruß
Mike

Hallo UweD,

hab mich wohl zu früh gefreut   :19: 

Eigentlich passt es, wenn ich die Form Neu Ziehung eingebe.....blendet sich die Startform aus und ich kann eine neue Ziehung eingeben.
Es wird auch zwischen den Tabellenblätter Samstag und Mittwoch je nach Datum gewechselt.

Wenn ich aber aus der Startform z.b, den Button für Münz-Tipp oder andere vorher gewählt habe und später von
der Startform aus, die Form Neue Ziehung eingeben klicke, wird auf das zuletzt verwendete Tabellenblatt gesprungen.
Trotz Eingabe von Datum für Mittwoch oder Samstag, wird nicht die entsprechende Tabelle angezeigt.

Erst wieder, wenn ich die Arbeitsmappe schließe und wieder öffne.

Wie kann man das beheben?

Gruß
Mike
Hallo Mike,

warum soll einerseits bildschirmfüllend die Userform angezeigt werden anderseits willst Du das Tabellenblatt aktivieren. Zu was? Verwende halt dann ganz einfach ein Select

Code:
Sub eintragenZ(targetSheet As String, dtDate As Date, iZ1 As Integer, iZ2 As Integer, iZ3 As Integer, iZ4 As Integer, iZ5 As Integer, iZ6 As Integer, iZZ As Integer)
'
' Schaltfläche4_Klicken Makro

Dim lfdNr As Long
  
    With Sheets(targetSheet)
     lfdNr = .Cells(Rows.Count, 1).End(xlUp).Row
       .Cells(lfdNr + 1, 1).NumberFormat = "m/d/yyyy"
       .Cells(lfdNr + 1, 1).Value = CDate(dtDate)
       .Cells(lfdNr + 1, 2) = Format(CStr(dtDate), "dddd")
       .Cells(lfdNr + 1, 3) = .Cells(lfdNr, 3) + 1
       .Cells(lfdNr + 1, 4) = iZ1
       .Cells(lfdNr + 1, 5) = iZ2
       .Cells(lfdNr + 1, 6) = iZ3
       .Cells(lfdNr + 1, 7) = iZ4
       .Cells(lfdNr + 1, 8) = iZ5
       .Cells(lfdNr + 1, 9) = iZ6
       .Cells(lfdNr + 1, 10) = iZZ
       .Select
    End With
End Sub
Hi

es kann daran liegen, daß bei der 2. Neueingabe das Datumfeld schon gefüllt ist.
Deshalb vorher noch löschen.

Me.tbDatum = ""  ergänzen


Code sähe dann so aus

Code:
Private Sub UserForm_Initialize()
    Me.tbDatum = ""
    Me.tb1.Enabled = False
    Me.tb2.Enabled = False
    Me.tb3.Enabled = False
    Me.tb4.Enabled = False
    Me.tb5.Enabled = False
    Me.tb6.Enabled = False
    Me.tbSZ.Enabled = False
    Me.cbSaveZ.Enabled = False
   
End Sub

LG UweD
(01.07.2020, 14:10)UweD schrieb: [ -> ]Hi

es kann daran liegen, daß bei der 2. Neueingabe das Datumfeld schon gefüllt ist.
Deshalb vorher noch löschen.

Me.tbDatum = ""  ergänzen


Code sähe dann so aus

Code:
Private Sub UserForm_Initialize()
    Me.tbDatum = ""
    Me.tb1.Enabled = False
    Me.tb2.Enabled = False
    Me.tb3.Enabled = False
    Me.tb4.Enabled = False
    Me.tb5.Enabled = False
    Me.tb6.Enabled = False
    Me.tbSZ.Enabled = False
    Me.cbSaveZ.Enabled = False
   
End Sub

LG UweD
Hallo.....habe ich so gemacht wie angegeben......ist immer noch so??
Seiten: 1 2