Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Kegelliste nach und nach erarbeiten ?
#21
Hallo @all Lesende,
zum besseren Verständnis angefügte Datei öffnen

.xlsm   CEF-Beispiel_1411_19.xlsm (Größe: 107,15 KB / Downloads: 37)
Mehrere Frames liegen vor in der MultiPage2 im Userform 1
Pro Page ein Spielframe
Jeder Frame ist ein Spiel mit unterschiedlicher Anzahl an Comboboxen
Frame1 hat 2 Cbo's
Frame2 hat 3 Cbo's
Frame3 hat 3 Cbo's
Frame4 hat 5 Cbo's
Frame5 hat 10 Cbo's
usw.
Alle Comboboxen (Cbo) werden durch eine Anweisung befüllt:
Code:
Sub rechne1()
    Dim i As Integer, f As Long, g As Long, h As Long, j As Long, k As Long, l As Long, m As Long, n As Long, o As Long, q As Long
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "9" Then
'            Me.Txt_Wurf_Sum = Me.Txt_Wurf_Sum * 1 + 1
            q = q + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "8" Then
            o = o + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "7" Then
            n = n + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "6" Then
            m = m + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "5" Then
            l = l + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "4" Then
            k = k + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "3" Then
            j = j + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "2" Then
            h = h + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "1" Then
            g = g + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "0" Then
        '    Me.Txt_Wurf_Sum = Me.Txt_Wurf_Sum * 1 + 1
            f = f + 1
        End If
    Next i
Me.LblZ_0 = f
Me.LblZ_1 = g
Me.LblZ_2 = h
Me.LblZ_3 = j
Me.LblZ_4 = k
Me.LblZ_5 = l
Me.LblZ_6 = m
Me.LblZ_7 = n
Me.LblZ_8 = o
Me.LblZ_9 = q
End Sub
Sub rechne2()
    Dim i As Integer, a As Long, b As Long, c As Long, d As Long, e As Long
    Me.Txt_Wurf_Summe = 0 '""
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) Then
            Me.Txt_Wurf_Summe = Me.Txt_Wurf_Summe * 1 + Me.Controls("Combobox" & i).Value
        End If
    Next i
    For i = 1 To 36
        If Not IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "Kalle" Then ' x
            a = a + 1
        End If
    Next i
    For i = 1 To 36
        If Not IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "Stina" Then ' s
            Me.Txt_Wurf_Summe = Me.Txt_Wurf_Summe * 1 + 3
            b = b + 1
        End If
    Next i
    For i = 1 To 36
        If Not IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "Kackstuhl" Then ' y
            Me.Txt_Wurf_Summe = Me.Txt_Wurf_Summe * 1 + 4
            c = c + 1
        End If
    Next i
    For i = 1 To 36
        If Not IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "Kranz" Then ' k
            Me.Txt_Wurf_Summe = Me.Txt_Wurf_Summe * 1 + 8
            d = d + 1
        End If
    Next i
    For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "9" Then
            e = e + 1
        End If
    Next i
    Me.Label1 = a
    Me.Label2 = b
    Me.Label3 = c
    Me.Label4 = d
    Me.Label5 = e
End Sub
Anstelle für jedes Spiel (Frame) jeder 1sten Combobox immer die gleiche 1ste Wurfspalte E (Wurf 1) zuzuweisen, denke ich mir das eventuell nach befüllen der ersten Spalten (immer gleiche Spaltenzuweisungen) Datum; Uhrzeit; Spielname und Keglername, die nächstleere Zelle in der horizontalen Zeile ausgehend von Spalte E (Wurf 1) bis X (maximal 20 Wurf) befüllt wird.

Ohne den Code wegen ca.27 Spielen in die länge zu ziehen.
Nun zur Frage:
Kann man den Code vielleicht so in etwa schreiben oder mit Variabeln erstellen?

Frame1 "2 auf die Vollen" beinhaltet 2 Comboboxen
Frame2 "grosse Hausnummer" 3 Comboboxen
Frame3 "kleine Hausnummer" 3 Comboboxen
Frame4 "Bingo" 5 3 Comboboxen
alle anderen wertzuweisende befinden sich direkt auf der Userform
Combobox "Datum"
Label "Uhrzeit"
Combobox "Spielauswahl"
Combobox "Kegler"

Kreative Ideen von euch VBA-Assen sind sehr willkommen

Danke vorab
Antworten Top
#22
Hallo Lesender :17:,
kann man das so realisieren Huh siehe Datei oben
oder ist das Umsetzen ein Unding an Code
oder eventuelle Fehlstellung der Arbeitsfolge

für deine Idea Hilfe bin ich offen

nur mit besten Absichten :21: (ein lernwilliger Excel VBA-anfänger)
Antworten Top
#23
Hallo Frank,

ich erkenne bei Dir nichts.
Ich verstehe nicht, was Du machen möchtest, wann wo wie Daten eingelesen werden sollen.
Sorry, aber die Userform halte ich zum Arbeiten für ungeeignet. Alles ist zusammengefercht.
Möchtest Du das auf einem Smartphone darstellen?

Was Du mit dem eingestellten Code ereichen möchtest, habe ich auch nicht verstanden.

Du hast mehrmals so eine Schleife:
Code:
For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "7" Then
            n = n + 1
        End If
    Next i

Je nach Auswahl der Combo wird diese Schleife immer 36 mal durchlaufen und eine Variable wird hochgezählt. Das Ergebnis ist immer 36.

Der Aufbau Deiner Tabellen sind auch suboptimal.
Excel ist dann Gut, wenn Listen vorliegen. Tabellen also immer in Listenform anlegen.

Ich Denke mal, das sind einige wesentliche Gründe, warum sich hier so wenige zu Deinem Problem melden. Ein anderer wichtiger Grund ist, dass Du Dir sehr gut vorstellen kannst, wie so ein Kegelabend abläuft und wer wann wie Punkte bekommt etc, aber uns das nie verständlich rüber gebracht hast.

Wenn ich Dir wirklich helfen wollte und könnte (Zeitmangel), dann würde das Ganze von Grund auf neu Aufbauen.
Mag sein, das Du so weiter kommst, aber es wird immer nur eine Flickschusterei. Bitte nimm meine Einlassung nicht persönlich, ich weiß, das Du mit Begeisterung an Deinem Projekt arbeitest. Aber auf Dauer wirst Du kein Spaß damit haben. Du wirst mer Freude haben, wenn Du etwas mehr Strucktur in die Arbeit bringst. Deswegen, vielleicht eine Zeitlang so weiter machen, und dann vielleicht mit dem gelernten alles neu aufbauen.
Gruß Atilla
Antworten Top
#24
Hallo,

ohne mir das jetzt genauer ansehen zu können, folgende Anmerkungen:

1. die Dim-Anweisungen sollten direkt nach der Titelzeile des Makros stehen.
2. Wenn Du screenupdating ausschaltest, solltest Du es vor einer solchen Anweisung:
Zitat:If bolAufruf Then Exit Sub
wieder einschalten
3. Statt der vielen If solltest Du vielleicht über den Einsatz von Select Case nachdenken.

Das Modul3 sollte auch so funktionieren:

Code:
Sub Makro1()

' Makro1 Makro
    Sheets("Spersonen").Range("z2:z2800,AD2:AD2800").ClearContents
    Range("AF1").Select
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#25
Hallo atilla,
(20.11.2014, 19:31)atilla schrieb: Hallo Frank,

ich erkenne bei Dir nichts.
Ich verstehe nicht, was Du machen möchtest, wann wo wie Daten eingelesen werden sollen.
Sorry, aber die Userform halte ich zum Arbeiten für ungeeignet. Alles ist zusammengefercht.
Möchtest Du das auf einem Smartphone darstellen?

Es mag zwar so aussehen (zusammengefercht) aber eine gewisse Struktur habe ich mir erlaubt.
Der Ablauf ist zumeist auch immer der gleiche.
Alles so einfach und simpel bedienen um von einer Auswahl zu nächsten zu springen
Darstellung erfolgt am Kegelabend auf einem 15,6 Zoll Läppi


Dann mal den Erklärbär rausholen

Mit UF2 "Der Abend kann beginnen" soll erst das Kegeldatum gewählt werden, anstehendes immer unten in der Liste(aktuell)
Optionsbutton "Anwesend" öffnet Combobox und Listfeld. Im Cbo werden die Namen der erschienenen Personen gewählt.
Die Listbox enthält beide Spalten ; Spalte1 der Keglerstamm - Spalte2 die Gewählten.
Optionbutton "Reihe" widerum soll die Abfolge wie geworfen wird wiedergeben.
Zum SChluß im UF2 auf den Button "Gutholz2 in das UF1 springen.

Im UF1 soll nun zuerst das erste Kegelspiel gewählt werden, zum warmmachen die ersten 3:
2 auf die Vollen ; Große - und Kleine Hausnummer
Ist die Spielauswahl erfolgt wird diese "Qutiert" mit dem entsprechenden Button.
Nächste Auswahl betrifft die Kegler. Als Hinweis welche Daten bis dato gesammelt wurden erscheint mit einem Klick auf Label "Ein". Hier kann nun ersehen werden Wurf pro Kegler; Spiel-ID usw. . Die weiteren Felder ergeben sich beim Spielverlauf: Wird zum Beispiel eine Kalle geschmissen zählt diese eine Null und wird in der Textbox rechts nben dem Wort "Kalle" angezeigt. Hat der Werfer nur Kallen geworfen werden diese dort addiert angezeigt. Bei Glocke oder Lustwurf wird diese von Hand per Combobox eingetragen. Ist der Werfende fertig erfolgt per "Eingabe"Button die Datenweitergabe an das entsprechende Tages- oder Kegelabend-Tabellenblatt

Das Tabellenblatt "Abend" fehlt nur leider, Beginn in Spalte A, erste Eintragung ab Zeile 2
Teil 2 zu deiner Frage oben 'Was geschehen soll'.
Die fixen Daten wie Datum Uhrzeit Spiel und Kegler bleiben gleich, nur jetzt soll bei jedem Spiel der erste Wurf immer in die Spalte "Wurf1" geschrieben werden.
Zitat:Was Du mit dem eingestellten Code ereichen möchtest, habe ich auch nicht verstanden.
Darin liegt nun meine Frage:
Ist es möglich per VBA, bei jedem Spiel den ersten Comboboxinhalt (Wurf1) immer in die Wurfspalte "E" zu schreiben?
Zitat:Du hast mehrmals so eine Schleife:
Code:
For i = 1 To 36
        If IsNumeric(Me.Controls("Combobox" & i).Value) And Me.Controls("Combobox" & i).Value = "7" Then
            n = n + 1
        End If
    Next i
Je nach Auswahl der Combo wird diese Schleife immer 36 mal durchlaufen und eine Variable wird hochgezählt. Das Ergebnis ist immer 36.
Wie hier gezeigt wird in der Combobox die 7 gewählt und anschließend in ein Label deklariert mit "n" übergeben
Zitat:Der Aufbau Deiner Tabellen sind auch suboptimal.
Excel ist dann Gut, wenn Listen vorliegen. Tabellen also immer in Listenform anlegen.
Grundstruktur oder Aufbau ist in List-/Tabellenform gehalten, zu sehen im Tab.blatt "Daten"
Zitat:Ich Denke mal, das sind einige wesentliche Gründe, warum sich hier so wenige zu Deinem Problem melden. Ein anderer wichtiger Grund ist, dass Du Dir sehr gut vorstellen kannst, wie so ein Kegelabend abläuft und wer wann wie Punkte bekommt etc, aber uns das nie verständlich rüber gebracht hast.
Mag sein das es so ist, nur bin ich stets bemüht es so zu erklären als wenn du mit uns am Kegel teilnimmst.
Zitat:Wenn ich Dir wirklich helfen wollte und könnte (Zeitmangel), dann würde das Ganze von Grund auf neu Aufbauen.
Bin ich sofort dabei ...
Zitat:Mag sein, das Du so weiter kommst, aber es wird immer nur eine Flickschusterei. Bitte nimm meine Einlassung nicht persönlich, ich weiß, das Du mit Begeisterung an Deinem Projekt arbeitest. Aber auf Dauer wirst Du kein Spaß damit haben. Du wirst mer Freude haben, wenn Du etwas mehr Strucktur in die Arbeit bringst. Deswegen, vielleicht eine Zeitlang so weiter machen, und dann vielleicht mit dem gelernten alles neu aufbauen.
Kritik ist immer kreativ zu sehen. Flickschusterei soll eigentlich perfektionierbar sein. Diese Beispieldatei ist das X.te Modell, immer wieder neue Ideen mit einfliessen zu lassen. Ob es letztentlich an der Struktur oder Einfachheit liegen mag. Es soll im Vollendeten Idiotensicher in der Anwendung sein. Klar ist mir auch das man eine Einweisung benötigt, bei der Anzahl an Spielverläufen und Punktevergabe und -schreibung. An der Tafel ist's kein Problem, nur das ganze rein rechnerisch und Anschaulich hier zu bewerkstilligen ist eine immense Hürde

Hallo Edgar,
(20.11.2014, 19:39)BoskoBiati schrieb: ohne mir das jetzt genauer ansehen zu können, folgende Anmerkungen:

1. die Dim-Anweisungen sollten direkt nach der Titelzeile des Makros stehen.
2. Wenn Du screenupdating ausschaltest, solltest Du es vor einer solchen Anweisung:
Zitat:If bolAufruf Then Exit Sub
wieder einschalten
3. Statt der vielen If solltest Du vielleicht über den Einsatz von Select Case nachdenken.

Das Modul3 sollte auch so funktionieren:

Code:
Sub Makro1()

' Makro1 Makro
    Sheets("Spersonen").Range("z2:z2800,AD2:AD2800").ClearContents
    Range("AF1").Select
End Sub

Select Case ist eine Option mal schauen wie ich die umsetze...

Danke für den Tipp
Antworten Top
#26
Hallo Frank,

in einem Punkt kann ich die Ausführungen von Atilla nur aufs Schärfste unterstützen:

Bei einem solchen Projekt muß zuerst der Plan stehen, am Besten auf einem Blatt Papier. Da sind dann alle Spiele aufgelistet, die Regeln und Bedingungen. Dazu kommt eine Liste aller Spieler. Dann sollte ein Ablaufplan existieren, in welchem die Verknüpfungen dargelegt sind. Im Grunde reden wir hier nämlich von einer Datenbank auf Excel-Basis, was nicht so einfach zu bewerkstelligen ist.
Die suboptimalen Schleifen sind mir auch schon aufgefallen, die kann man ganz anders aufbauen.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#27
Hallo@all, in dieser Datei ist die UF2 die Startansicht => Datum wählen; Option => Anwesende wählen (sind fertig) dann von den jetzt Anwesenden die Reihenfolge bestimmen (2 Testpersonen sind schon gewählt). Nun auf Button "Gut Holz" klicken. UF1 öffnet sich. Hier zuerst das Kegelspiel wählen und per Button "Quitieren" bestätigen, es wird die Page des Spieles angezeigt. Jetzt erst kann eine Keglerauswahl vorgenommen werden. In der Page1 kann nun der Wurf1 und 2 eingetragen werden. Drückt man neben Hinweise auf das grün unterlegte "Ein" werden Zusatzinfo's sichtbar.

Nun zur alles entscheidende Frage:
Kann bei jedem Spiel der erste Wurf immer in die Spalte E geschrieben werden.

Ja oder Nein???

Best Weekend for all
Antworten Top
#28
Hallo Frank,

ich kann hier leider die Datei nicht herunterladen und sehe somit auch deinen Code nicht aber rein theoretisch würde ich sagen: Ja, das kann man.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#29
Hallo Frank,
hallo alle Helfenden,

nach meinen Erfahrungen mit Kegeln in der Vergangenheit...
So ein Kegelabend spielt sich doch immer, mehr oder weniger, nach dem gleichen Schema ab.
1. Man trifft sich an einem Tag (Datum).
2. Danach wird die Anzahl der Spieler festgestellt, es sei denn, es sind tatsächlich immer die
gleiche Anzahl Spieler (cbo oder opt).
3. Nun wird in bestimmter oder willkürlicher Reihenfolge ein Spiel ausgewählt (cbo).
4. Die Anzahl der Würfe hängt vom jeweiligen Spiel ab.
5. Die Daten oben müssen irgendwie in eine Tabelle geschrieben und auswertbar sein.

Die Regeln der einzelnen Spielevarianten näher zu erklären, überlasse ich Frank.
Hoffe Licht ins Dunkel gebracht zu haben oder auch nicht Huh?!

Bis dahin
Max
Antworten Top
#30
Hallo Frank,

ich habe die Datei herunterladen und auch öffnen können...
... und auch ziemlich schnell wieder geschlossen. Das ist einfach nur grauslich.

Gruß Uwe
Antworten Top


Gehe zu:


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