Werte aus Userform in mehreren Tabellen per VBA abspeichern
#1
Hallo Liebe Forum-Mitglieder,

Ich habe heute wieder ein neues Problem.

Ich habe zu meiner Arbeitsmappe hier im Forum schon dazu sehr gute Hilfe bekommen.

Heute habe ich folgendes Problem:

Ich habe eine Startform, dort gibt es den Button "Neue Ziehungen eingeben".

Diese Ruft eine Eingabeform auf, in der ich die Ziehungen entweder für Mittwochs oder Samstag eingebe.

Diese Zahlen werden korrekt in den Tabellenblättern "Samstagsziehungen" und "Mittwochsziehungen" abgespeichert.

Jetzt sollen die Zahlen aber zusätzlich von dort auch in die Tabellen

"Lotto-Uhr-Samstag"     in Spalte U bis AA
"Lotto-Uhr-Mittwoch"     in Spalte U bis AA
"Kreuz-Tipp-Samstag"    in Spalte BX bis CE
"Kreuz-Tipp-Mittwoch"   in Spalte BX bis CE
"Münz-Tipp-Samstag"    in Spalte Z bis AG für Samstagsziehungen  und  in Spalte AI bis AP für Mittwochsziehungen

abgespeichert werden.

kann man den bestehenden Code dafür erweitern?

In der Excel-Mappe habe ich noch zusätzliche Informationen.

Gruß
Mike


.xlsm   Lotto_Kampf - Kopie.xlsm (Größe: 255,56 KB / Downloads: 5)
Top
#2
Hallöchen,

in Deinem Makro für die Eintragungen brauchst Du einen weiteren Parameter für die Spaltenangabe.

jetzt:
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)

dann
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, Optional iCol as Integer = 0)

und bei den Spaltenangaben

....Cells(....., 1 + iCol)

Der Aufruf im Userformcode ist dann z.B.

eintragenZ "Lotto-Uhr-Samstag", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Column("U")-1

und das gibst Du dann entsprechend noch für die anderen Blätter ein.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • MdeJong
Top
#3
Moin

Wenn du so weiter machst haben dir die Foren-Helfer irgendwann die komplette Anwendung programmiert.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#4
(02.07.2020, 19:48)shift-del schrieb: Moin

Wenn du so weiter machst haben dir die Foren-Helfer irgendwann die komplette Anwendung programmiert.
Bis ich programmieren kann, bin ich wahrscheinlich nicht mehr auf dieser Welt?!
Ich bi froh, das ich Excel soweit schon bedienen kann.

Du gönnst mir die Hilfe nicht, oder?  :)
Top
#5
Ich bin nur der Ansicht dass man mit offenen Karten spielen soll.
Wenn es dein Wunsch ist das jemand das für dich komplett programmieren soll dann solltest du das auch so kommunizieren.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#6
(02.07.2020, 20:25)shift-del schrieb: Ich bin nur der Ansicht dass man mit offenen Karten spielen soll.
Wenn es dein Wunsch ist das jemand das für dich komplett programmieren soll dann solltest du das auch so kommunizieren.
Hallo shift-del,

ich dachte das es üblich ist, das jeder hier seinen Beitrag dazu beitragen kann?......habe nichts böses dabei gedacht, oder drum herum reden wollen.

Bin schon oft hier angemacht worden. Ich arbeite gerne mit Excel....aber VBA...da habe ich wirklich 2 linke Hände  :05:
Wenn es Interessenten gibt, die mir komplett allein dabei helfen wollen, wäre das natürlich super. 

mein Projekt ist sicherlich noch Ausbaubar......das sehe ich aber immer erst später, was noch fehlt!

Gruß
Mike

(02.07.2020, 19:36)schauan schrieb: Hallöchen,

in Deinem Makro für die Eintragungen brauchst Du einen weiteren Parameter für die Spaltenangabe.

jetzt:
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)

dann
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, Optional iCol as Integer = 0)

und bei den Spaltenangaben

....Cells(....., 1 + iCol)

Der Aufruf im Userformcode ist dann z.B.

            eintragenZ "Lotto-Uhr-Samstag", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Column("U")-1

und das gibst Du dann entsprechend noch für die anderen Blätter ein.
Danke schauan.........ich bin mir nicht ganz sicher, in welchem Code ich das eintragen soll?
Top
#7
Hallo schauan,


also bis auf diese Angabe

....Cells(....., 1 + iCol)

habe ich ....glaube ich alles gefunden, wo ich es einsetzen soll.

Die oberste Zeile.......weiss ich nicht wie und wo sie eingetragen werden soll ?

Gruß
Mike

Ist das so korrekt?

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, Optional iCol As Integer = 0)
'
' Schaltfläche4_Klicken Makro

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

Code:
Private Sub cbSaveZ_Click()
Dim ctrl As Control, bCheck As Boolean

bCheck = True

For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Then
    If ctrl = "" Then
        ctrl.BackColor = vbYellow
        bCheck = False
    Else
        ctrl.BackColor = vbWhite
    End If
End If
Next

If bCheck = False Then
    MsgBox "Fehlende Werte"
    Exit Sub
End If

Dim sSheet As String

  If tbDatum <> "" Then
        If IsDate(tbDatum) Then
       
            Select Case WorksheetFunction.Weekday(CDate(tbDatum), 2)
              Case 6
                sSheet = "Samstagziehungen"
              Case 3
                sSheet = "Mittwochsziehung"
              Case Else
                tbDatum.SetFocus
                MsgBox "Datum kein Mittwoch oder Samstag"
                Exit Sub
            End Select
           
            eintragenZ sSheet, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ
            eintragenZ "Lotto-Uhr-Samstag", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Column("U") - 1
            eintragenZ "Lotto-Uhr-Mittwoch", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Column("U") - 1
            eintragenZ "Kreuz-Tipp-Samstag", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Column("U") - 1
            eintragenZ "Kreuz-Tipp-Mittwoch", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Column("U") - 1
            eintragenZ "Münztipp-Samstag", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Column("U") - 1
           
           
            For Each ctrl In Me.Controls
                If TypeName(ctrl) = "TextBox" Then ctrl = ""
            Next
             MsgBox "Ziehung eingetragen"
        Else
             MsgBox "kein Datum"
        End If
  Else
    MsgBox "Datum fehlt"
  End If
End Sub
Top
#8
Hallöchen,

erst mal eine kleine Ergänzung. Korrekt wäre Columns("U").Column usw., weil wir ja die Spaltennummer benötigen ...
ansonsten ja, aber iCol auch noch in der Zeile einarbeiten, es soll doch sicher z.B. in Spalte U nach dem letzten Eintrag gesucht werden?:
lfdNr = .Cells(Rows.Count, 1).End(xlUp).Row
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • MdeJong
Top
#9
ich habe das jetzt so verstanden und geändert?

Code:
           eintragenZ sSheet, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ
            eintragenZ "Lotto-Uhr-Samstag", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'eintragenZ Lotto - Uhr - Mittwoch, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'eintragenZ Kreuz - Tipp - Samstag, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'eintragenZ Kreuz - Tipp - Mittwoch, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'eintragenZ Münztipp - Samstag, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'lfdNr = .Cells(Rows.Count, 1).End(xlUp).Row

bekomme aber eine Fehlermeldung..Typenunverträglichkeit

die mit dem '  Zeichen habe ich erst einmal ausgeblendet...wollte erst eine Tabelle ausprobieren, ob etwas dort gespeichert wird

Hallo schauan,


ich glaube so meintes du das oder?.....zumind. werden schon mal die Zahlen in der Tabelle "Lotto-Uhr-Samstag " eingetragen, nur halt nicht in der unteren freien Zeile

Code:
            eintragenZ sSheet, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ
            eintragenZ "Lotto-Uhr-Samstag", tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U").Column - 1
            'eintragenZ Lotto - Uhr - Mittwoch, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'eintragenZ Kreuz - Tipp - Samstag, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'eintragenZ Kreuz - Tipp - Mittwoch, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'eintragenZ Münztipp - Samstag, tbDatum, tb1, tb2, tb3, tb4, tb5, tb6, tbSZ, Columns("U") - 1
            'lfdNr = .Cells(Rows.Count, 1).End(xlUp).Row
           
            For Each ctrl In Me.Controls
                If TypeName(ctrl) = "TextBox" Then ctrl = ""

Wie ich diese Zeile im Code einbaue

lfdNr = .Cells(Rows.Count, 1).End(xlUp).Row

weiß ich nicht...bekomme dazu eine Fehlermeldung
Top
#10
Hallöchen,

Wie ich diese Zeile im Code einbaue

Code:
lfdNr = .Cells(Rows.Count, 1).End(xlUp).Row

die Zeile ist doch schon drin

Code:
' Schaltfläche4_Klicken Makro

Dim lfdNr As Long

    With Sheets(targetSheet)
     lfdNr = .Cells(Rows.Count, 1).End(xlUp).Row
       .Cells(lfdNr + 1, 1 + iCol).NumberFormat = "m/d/yyyy"
nur sollst Du auch hier noch das mit den Columns ... verarbeiten, also dann

Code:
lfdNr = .Cells(Rows.Count, 1 + iCol).End(xlUp).Row
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • MdeJong
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste