Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Buchen Neu
#1
Hallo Experten!
Ich möchte gerne meine jetzige Buchungsmethode optimieren!
Um dies alles zu beschreiben, gibt es jetz erstmal viel Text geben.
Alles was ich jetzt beschreibe gibt es schon als Code und läuft auch.
Zustand ist:
Wenn der Kegelaben beendet ist, soll die Abrechnung erfolgen. Zur Zeit mache ich es so, dass das Startblatt aufgerufen wird und Ich dann in der Spalte AF schaue was jeder einzelne bezahlen muss. Wenn die anwesende Person bezahlt hat, mache ich in der Spalte AG ein x. Haben alle anwesenden bezahlt, betätige ich im Startblatt den CommandButton "Start". Dadurch wird eine UF "Willkommen" gestartet und ich betätige dann den Button "Buchen", durch betätigen dieses Button wird folgendes ausgelöst. Die Tabelle Startblatt wird in Tabelle1 kopiert, die Werte aus Startblatt werden in die Tabelle Übersicht eingetragen. So habe ich schon alles von diesen Abend. Treffen wir uns dann wieder, Spielen wir erst und dann wird wieder abgerechnet.
Fehlte das letzte mal einer brauch ich wieder Stift und Papier um alles auszurechnen.

Dies möchte ich gerne einfacher haben und habe dafür eine neue UF erstellt (Hoffe alles bedacht zu haben).

Was ich jetzt gerne haben möchte (ist in der neuen UF Bezahlen):
1. Abrechnung für Pärchen
2. Ausrechnung der Kegelbahn ( Betrag für Kegelbahn soll in eine ander Spalte eingetragen werden)
3. Wenn einer zuviel Bezahlt hat kann er auswählen ob er dies als Spende gebucht haben will oder als Guthaben

Wie kann dies realisiert werden?
Ich möchte diese Code's zusammenführen und alles gerne auf einer UF(Bezahlen) haben.
Bitte um Vorschläge!


Angehängte Dateien
.xlsm   Buchen.xlsm (Größe: 341,14 KB / Downloads: 14)
mfg
Michael
98

WIN 7 Office 2007
to top
#2
Hallo Michael,

welcher deiner Userformen soll durch die neue abgelöst werden? Und könnte man das nicht in einer der alten integrieren?
Gruß Stefan
Win 7 / Office 2007
to top
#3
Hallo Stefan!
Nach dem ich deine Antwort gelesen habe, mach ich mir neue gedanken und teste was an Code's da ist.
Vieleicht bekomme ich ja das doch selber hin Huh
Ich werde mich in den nächsten Tagen wieder melden, mit dem ergebniss.
mfg
Michael
98

WIN 7 Office 2007
to top
#4
Hallo Leute!
Nach dem ich mir gestern noch die nacht zum Tag gemacht habe. Komme ich nicht weiter und brauche eure Hilfe.
Wie Stefan schon fragte, soll ein UF durch eine Neue UF "Bezahlen" abgelöst werden.
Zu Erklärung:
Ich habe in der jetzigen UF " Willkommen " einen Button "Buchen" (ohne UF) und einen Button "Nachbuchen" ( mit UF).
Beides soll in Der UF "Bezahlen" vereint werden.
Wenn UF "Bezahlen" aufgerufen wird soll, wenn ein Name in der ComboBox ausgewählt ist, in der ListBox alle offenen Beträge angezeigt werden.
Alle offenen Beträge sind,die aus der Tabelle "Startblatt" und "Übersicht".
Wo ich jetzt nicht weiter komme ist die Beträge in der ListBox alle anzuzeigen.
Die offenen Beträge aus Übersicht bekomme ich in der ListBox angezeigt, aber ich weiß nicht wie ich den Betrag vom Startblatt noch rein bekomme. Wie geht das Huh???????
Dann die nächste frage:
Wie kann ich die offenen Beträge zusammen rechen was noch bezahlt werden muss und in der TextBox1 darstellen?
Wobei ich auch noch nicht weiß ob eine TextBox oder Label besser ist (der Betrag zum Bezahlen darf ja nicht geändert werden)

Wer kann oder möchte mir weiter helfen?
Für alle die Antworten Tausen Dank!
mfg
Michael
98

WIN 7 Office 2007
to top
#5
Hallo Michael,

kannst Du mal noch den Code posten, wie Du die Listbox füllst? Ich nehme an, mit AddItem?

Ansonsten folgende Hinweise / Vorgehensweise / Ansätze:

- Du suchst in Spalte B den betreffenden Namen, entweder mit Find oder Du schaust in einer Schleife in jede Zelle und Vergleichst mit Dem gewählten Eintrag aus der Combobox
Code:
With Sheets("Startblatt")
  iZeile=.Range("B5:B15").Find... .Row
- dann prüfst Du, ob in Af ein Betrag <0 steht
Code:
IF .Range("AF" & iZeile) < 0 Then
- Wenn ja, dann fügst Du ihn der Listbox hinzu.
Code:
ListBox1.AddItem ...
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
michel34497
to top
#6
Hallo Andre!
Hier der Code was ich bis jetzt gemacht habe.

Code:
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
   ComboBox2.Visible = True
    
    ComboBox2.RowSource = "Startblatt!B5:B13" & loLetzte
    
    End If
    
If CheckBox1.Value = 0 Then
    UserForm_Initialize
    ComboBox2.Visible = False
    ComboBox2 = ""
End If
End Sub

Private Sub CheckBox2_Click()
If TextBox3.Value Then
   TextBox4.Visible = True
    
    
    
    End If
    
If TextBox3.Value = 0 Then
    UserForm_Initialize
    TextBox4.Visible = False
    TextBox4 = ""
End If
End Sub

Private Sub ComboBox1_Change()
Dim loLetzte As Long
Dim dblwert As Double, dblSumm As Double
If Me.ComboBox1.ListIndex > -1 Then
    loLetzte = Cells(Rows.Count, 1).End(xlUp).Row
End If
Me.ListBox1.Clear
Call prcListboxEinlesen(loLetzte) ' neu eingefügt um ListBox zu aktivieren
End Sub
Private Sub CommandButton2_Click()
Unload Bezahlen
End Sub
Private Sub CommandButton3_Click()
Unload Bezahlen
End Sub
Sub prcNamenEinfügen()
    Dim rngName As Range
    Dim lngZeile As Long
    
    lngZeile = 9
    Worksheets("Spiele").Range("A9:A23").ClearContents
    For Each rngName In Worksheets("Startblatt").Range("C5:C13,C16:C21")
        If rngName.Value = 1 Then
            Worksheets("Spiele").Cells(lngZeile, 1).Value = rngName.Offset(0, -1).Value
            lngZeile = lngZeile + 1
        End If
    Next rngName
End Sub
Private Sub rechne()
    Dim i As Integer
    
    Me.TextBox5 = 0
    
    For i = 1 To 2
        If IsNumeric(Me.Controls("TextBox" & i).Value) Then
            Me.TextBox5 = Me.TextBox5 * 1 + Me.Controls("TextBox" & i).Value
        End If
    Next i
  
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

   Dim lngC As Long
    'Combobox so einlesen, damit keine leeren Listeneinträge vorkommen.
    
    For lngC = 2 To 20 Step 2
        ComboBox1.AddItem Cells(4, lngC)
    Next lngC
    
With Me.ListBox1
    .ColumnCount = 2
    .ColumnWidths = "2cm;1,5cm;1cm"
    
End With
ComboBox2.Visible = False
    ComboBox1.RowSource = "Startblatt!B5:B13" & loLetzte
End Sub
Private Sub prcListboxEinlesen(lngLetzte As Long)

   Dim lngC As Long, lngA As Long

    For lngC = 5 To lngLetzte
        If Cells(lngC, ComboBox1.ListIndex * 2 + 3) < 0 Then
            Me.ListBox1.AddItem Cells(lngC, 1).Value
            Me.ListBox1.Column(1, lngA) = Format(Cells(lngC, ComboBox1.ListIndex * 2 + 3).Value, "#,##0.00 €")
            Me.ListBox1.Column(2, lngA) = lngC
'            dblSumm = dblSumm + Cells(lngc, ComboBox1.ListIndex * 2 + 3)
            lngA = lngA + 1
        End If
    Next lngC
End Sub

Ich verstehe nicht was du meinst (Immer noch anfänger)


Angehängte Dateien
.xlsm   Buchen.xlsm (Größe: 345,98 KB / Downloads: 4)
mfg
Michael
98

WIN 7 Office 2007
to top
#7
Hallo Experten!
Igrendwie komme ich nicht weiter, auch Nicht mit der Hilfe Stellung von Andre!
Ich bekomme es einfach nicht hin das Code mir aus der Tabelle "Stratblatt Spalte AF" und der Tabelle "Übersicht" die minus Beträge in der "ListBox1" anzeigt. Ich habe keine Ahnung mehr was und wie ich das hinbekomme.

Wer kann mir helfen?
mfg
Michael
98

WIN 7 Office 2007
to top
#8
Hallo Michael,

deine Listbox wird ja bisher aus der Tabelle Übersicht befüllt. Hier werden 3 Spalten in die Listbox eingetragen und zwei davon, nämlich das Datum und der Betrag wird dann angezeigt. Was soll beim Startblatt neben dem Betrag angezeigt werden? Das Tagesdatum oder ein anderes? Ich habe es mal mit dem Tagesdatum gemacht und zwar so, wie André es bereits vorgeschlagen hat mit der Find-Methode.


Angehängte Dateien
.xlsm   Buchen.xlsm (Größe: 353,49 KB / Downloads: 5)
Gruß Stefan
Win 7 / Office 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
michel34497
to top
#9
Hallo Steffan!
Vielen Dank für deine Hilfe!
Es soll aber NICHT das Tagesdatum genommen werden sonder das Datum was in Startblatt AI B2 steht.

Der rest sieht gut aus, wenn du das nochmal ändern könntests.
Habe den Code noch geändert da er nicht die richtige Spalte eingelsen hat.
Code:
Me.ListBox1.Column(1, lngA) = Format(rngBereich.Offset(0, [b]32[/b]).Value, "#,##0.00 €")
Werde jetzt den versuch starten wenn ein zweiter Spieler ausgewählt wird dies dann auch in der ListBox1 einzufügen.

Danke Danke!
mfg
Michael
98

WIN 7 Office 2007
to top
#10
Hallo Michael,

habe es jetzt auf die Zelle AI2 bezogen

Code:
Private Sub prcListboxEinlesen(lngLetzte As Long)
    Dim lngC As Long, lngA As Long
    Dim rngBereich As Range 'diese Variable neu eingefügt
    
    For lngC = 5 To lngLetzte
        If Worksheets("Übersicht").Cells(lngC, ComboBox1.ListIndex * 2 + 3) < 0 Then
            Me.ListBox1.AddItem Worksheets("Übersicht").Cells(lngC, 1).Value
            Me.ListBox1.Column(1, lngA) = Format(Worksheets("Übersicht").Cells(lngC, ComboBox1.ListIndex * 2 + 3).Value, "#,##0.00 €")
            Me.ListBox1.Column(2, lngA) = lngC
'            dblSumm = dblSumm + Cells(lngc, ComboBox1.ListIndex * 2 + 3)
            lngA = lngA + 1
        End If
    Next lngC
    'neuer Bereich
    Set rngBereich = Worksheets("Startblatt").Columns(2).Find(ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not rngBereich Is Nothing Then
        Me.ListBox1.AddItem Worksheets("Startblatt").Range("AI2").Value
        Me.ListBox1.Column(1, lngA) = Format(rngBereich.Offset(0, 30).Value, "#,##0.00 €")
    End If
End Sub

(28.07.2014, 19:26)michel34497 schrieb: Habe den Code noch geändert da er nicht die richtige Spalte eingelsen hat.
Code:
Me.ListBox1.Column(1, lngA) = Format(rngBereich.Offset(0, [b]32[/b]).Value, "#,##0.00 €")

Da muß ich dir widersprechen. Es geht hier um den Versatz zu der Spalte B in der die Namen stehen und da sind es eben 30 Spalten.
Gruß Stefan
Win 7 / Office 2007
to top


Gehe zu:


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