Hallo Leute! Hab da wieder mal eine Herausforderung an euch! Ich möchte über meine Userform (Spiel1) in der Tabelle Beispiel einen neuen Clubnamen eintragen. Funktioniert auch soweit. Nur ist es so wenn in der Tabelle Beispiel hinter dem Clubname nichts steht wird der Clubnahme nicht dort eingetragen, so hab ich eine Leerzeile die ich nicht möchte. Es soll in der Zeile ab B4 der erste Clubname eingetragen werden wenn diese Leer ist soll sie dann mit dem Clubnamen gefüllt werden, ist dies möglich? Der Code stammt aus dem alten Forum. Dann soll noch eine Auswertung statt finden diese soll dann im Tabellenblatt Auswertung sein. Um dies zu machen habe ich in der UserForm (Spiel1) zwei OpptionButton eingefügt. Diese dienen dazu um eine Frauen und Männer Auswertung zumachen. Heist es werden 3 Auswertungen gemacht Bester Club, Frau und Mann. Wenn ich also einen neuen Namen unter der Auswahl Club eintrage muss ich einen OptionButton anwählen Damit auch der Name in der Auswertung erscheint. Aber ich möchte ersteinmal den anfang mit dem Clubnahmen haben. Den rest möchte ich gerne nach für nach machen. Damit ich das auch verstehe und dann auch anderen mal helfen KANN
(27.05.2014, 22:04)michel34497 schrieb: Ich möchte über meine Userform (Spiel1) in der Tabelle Beispiel einen neuen Clubnamen eintragen. Funktioniert auch soweit. Nur ist es so wenn in der Tabelle Beispiel hinter dem Clubname nichts steht wird der Clubnahme nicht dort eingetragen, so hab ich eine Leerzeile die ich nicht möchte. Es soll in der Zeile ab B4 der erste Clubname eingetragen werden wenn diese Leer ist soll sie dann mit dem Clubnamen gefüllt werden, ist dies möglich?
Versuchs mal so (Ist aber kaum kommentiert)
Code:
Private Sub CommandButton7_Click() Dim lngLetzte As Long
If TextBox10 <> "" Then 'Ist die Zelle B4 leer? If Cells(4, 2) = "" Then Cells(4, 2) = TextBox10 Else lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count) lngLetzte = lngLetzte + 2 Range("A4:AQ5").Copy Cells(lngLetzte, 1) Cells(lngLetzte, 2) = TextBox10 Application.CutCopyMode = False End If Else MsgBox "Kein neuer Club eingetragen!" End If ComboBoxenFuellen End Sub
Hallo Stefan! Vielen Dank für die Hilfe von dir! Funkzioniet, so wie ich das haben wollte. Nun bastele ich noch daran, wie ich die Clubnamen, Frauen und Männer in meine Auswertung übertragen kann. Frauen und Männer werden über dei optionsButton eingetragen. Ich versuche mal einen Code zusammen zu Basteln und werde mich dann wieder melden wenn ich wieder an igrend etwas scheitere.
Hallo Experten! Wie schon im letzten beitrag gesagt melde ich mich wieder wenn es scheitert! Es ist soweit. Wo ich nicht mehr weiter in meinen Projekt komme, werde ich im nachfolgenden versuchen zu beschreiben. Eine kleine Beschreibung des gesamt Projektes: Es geht um eine Dorfmeisterschaft im Kegeln. Ich habe eine Userfoem (UF) erstellt wo alle Club's und Namen erfasst werden ( ist auf der rechten Seite der UF) dort soll auch ein auswahl ob Frau oder Mann getroffen werden. Ist der Clubname eingetragen werden dann im Blatt Beispiel darunter der Name eingetragen über die UF. Soweit geht das auch alles. Wenn dies alles geschen ist geht es zum eigentlichen Spiel. Dann wird auf der linken seite der UF der Club ausgewählt, der Name, das Spiel, wenn dies geschen ist werden die Würfe (über eine ComboBox) ausgewählt und eingetragen. Sind alle Würfe eingetragen kann mann mit den Button Würfe eintragen das in das Blatt Beispiel unter den Clubnamen und Spieler eintragen. Nach dem alle Würfe gemacht wurden soll noch eine Auswertung gemacht werden wer der Sieger ist. Zum Teil geht auch einiges. Jetzt zum eigentlichen: 1. Ich möchte das wenn ein Neuer Club eingetragen wird der Clubname auch in der Tabelle Auswertung eingetragen wird ( habe ich fast hinbekommen ). 2. Wenn ein neuer Name eingetragen wird, soll dieser auch in der Tabelle Auswertung mit Clubname eingetragen werden, unter der option Mann oder Frau (Tabelle Auswertung Culb Wertung, Frauen Wertung und Männer Wertung). 3. Soll über einen Button eine Auswertung statt finden die ich noch im einzelnen beschreiben muss.
Mir sind ersteimal Punkt 1 und 2 wichtig! Wenn dies einwndfrei funkt dann möchte ich zu Punkt 3 eine genauere beschreibung geben. im moment schaffe ich es das excel nicht mehr rehagiert. Aktuelle Tabelle ist angehängt.Bitte nur noch diese angehäng Tabelle benutzen!
(03.06.2014, 22:30)michel34497 schrieb: 1. Ich möchte das wenn ein Neuer Club eingetragen wird der Clubname auch in der Tabelle Auswertung eingetragen wird ( habe ich fast hinbekommen ).
Für den Clubnamen habe ich das CommanButton7_Click-Makro geändert und eine Kommentarzeile eingefügt
Code:
Private Sub CommandButton7_Click() Dim lngLetzte As Long
If TextBox10 <> "" Then 'Ist die Zelle B4 leer? With Worksheets("Beispiel") If .Cells(4, 2) = "" Then .Cells(4, 2) = TextBox10 Else lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) lngLetzte = lngLetzte + 2 .Range("A4:AQ5").Copy .Cells(lngLetzte, 1) .Cells(lngLetzte, 2) = TextBox10 Application.CutCopyMode = False End If End With 'es ist günstiger, die Tabelle Auswertung nach der zweiten If-Abfrage zu befüllen, da nur einmal der Code nötig ist With Worksheets("Auswertung") lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) lngLetzte = lngLetzte + 1 .Cells(lngLetzte, 1) = TextBox10 End With Else MsgBox "Kein neuer Club eingetragen!" End If ComboBoxenFuellen End Sub
(03.06.2014, 22:30)michel34497 schrieb: 2. Wenn ein neuer Name eingetragen wird, soll dieser auch in der Tabelle Auswertung mit Clubname eingetragen werden, unter der option Mann oder Frau (Tabelle Auswertung Culb Wertung, Frauen Wertung und Männer Wertung).
Für die Auswertung nach Geschlecht habe ich eine neue If-Abfrage eingefügt, wenn keine Auswahl getroffen ist bekommst Du eine Meldung. Ist zwar von der Reihenfolge nicht optimal, wollte aber den Gesamtaufbau nicht großartig umbauen. Den Rest habe ich auch spärlich kommentiert und dein Teil auskommentiert.
Code:
Private Sub CommandButton2_Click() ' Club auswählen und Namen eintragen Dim rngZelle As Range Dim lngZeile As Long Dim lngZaehler As Long Dim lngSpalte As Long Dim blnVorhanden As Boolean Dim lngLetzte As Long
'falls ein OptionButton ausgewählt ist If OptionButton1.Value Xor OptionButton2.Value Then ' Club ausgewählt und Name/Vorname eingetragen If ComboBox12 <> "" And TextBox1 <> "" And TextBox11 <> "" Then ' Zeile mit Clubname suchen Set rngZelle = Columns(2).Find(ComboBox12, lookat:=xlWhole, LookIn:=xlValues) ' Clubname gefunden If Not rngZelle Is Nothing Then ' es sind noch keine Namen eingetragen If rngZelle.Row + 2 > rngZelle.End(xlDown).Row Then ' Zeile einfügen Rows(rngZelle.Row + 2).Insert shift:=xlDown ' Name und Vorname in die neue Zeile rngZelle.Offset(2, -1) = TextBox1 rngZelle.Offset(2, 0) = TextBox11 ' Format kopieren und in neue Zeile übertragen Range(rngZelle.Offset(1, -1), rngZelle.Offset(1, 43)).Copy rngZelle.Offset(2, -1).PasteSpecial Paste:=xlPasteFormats ' Füllfarbe zurücksetzen, damit Spalten für Gesamt nicht gelb formatiert sind Range(rngZelle.Offset(2, -1), rngZelle.Offset(2, 43)).Interior.ColorIndex = xlNone Else ' Schleife über alle Namen, die zum betreffenden Club gehören For lngZaehler = rngZelle.Offset(2, 0).Row To rngZelle.End(xlDown).Row ' Name und Vorname stimmen mit TextBoxen überein If Cells(lngZaehler, 1) = TextBox1 And Cells(lngZaehler, 2) = TextBox11 Then ' Variable auf True setzen blnVorhanden = True ' Schleife verlassen Exit For End If Next lngZaehler ' Variable ist True If blnVorhanden Then MsgBox "Diesen Spieler gibt es bereits" Else ' nach dem letzten Spieler eine Zeile einfügen Rows(rngZelle.End(xlDown).Row + 1).Insert shift:=xlDown ' Name und Vorname in die neue Zeile Cells(rngZelle.End(xlDown).Row + 1, 1) = TextBox1 Cells(rngZelle.End(xlDown).Row + 1, 2) = TextBox11 ' Format kopieren und in neue Zeile übertragen Range(Cells(lngZaehler - 1, 1), Cells(lngZaehler - 1, 42)).Copy Cells(lngZaehler, 1).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False 'Es muß die Spalte entsprechend dem Geschlecht angegeben werden If OptionButton1.Value Then lngSpalte = 7 ElseIf OptionButton2.Value Then lngSpalte = 13 End If 'und die letzte Zeile entsprechend dem Geschlecht gesucht werden With Worksheets("Auswertung") lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, lngSpalte)), .Cells(.Rows.Count, lngSpalte).End(xlUp).Row, .Rows.Count) lngLetzte = lngLetzte + 1 .Cells(lngLetzte, lngSpalte) = TextBox1 .Cells(lngLetzte, lngSpalte).Offset(, 1) = TextBox11 .Cells(lngLetzte, lngSpalte).Offset(, 2) = ComboBox12 End With ' 'Ab hier meine Version ' Sheets(Tab2).Select 'Auswertung aufrufen ' ' lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 7)), Cells(Rows.Count, 7).End(xlUp).Row, Rows.Count) ' lngLetzte = lngLetzte + 1 ' Cells(lngLetzte, 7) = TextBox1 ' Cells(lngLetzte, 8) = TextBox11 ' Cells(lngLetzte, 9) = ComboBox12 ' ' ' Sheets(Tab1).Select ' ' ' ************************************************
End If End If ' TextBoxen und Set-Variable leeren TextBox1 = "" TextBox11 = "" Set rngZelle = Nothing ComboBoxenFuellen End If Else MsgBox "Bitte Club auswählen und Namen/Vornamen eintragen" End If 'falls kein Geschlecht ausgewählt Else MsgBox "Das Geschlecht auswählen!" End If End Sub
Gruß Stefan
PS: Es ist in den alllermeisten Fällen unnötig, etwas zu selektieren.
@Käpt'n Blaubär Natürlich mach ich das, mit den geänderten Code von stefan @Stefan Vielen dank für die Hilfe! Doch gibt es Probleme, bin grade noch am testen und werde mich dann wieder melden ,was nicht richtig funkt.
Hallo Leute! Habe getestet und mir sind fehler aufgefallen.
Wenn ein neuer Club eingetragen wird ist alles in Ordnung. Trage ich nun einen Namen für den neuen Club ein, erscheint dieser nicht im Tabellenblatt Auswertung. Erst wenn noch ein neuer Name eingetragen wird erscheint dieser auch bei der Auswertung. Aber nicht der erste eingetragene Name. Finde leider nicht woran es liegen kann! Das andere ist bei der auswahl vom geschlecht. Vergisst mann die Auswahl zu ändern, wird folglich auch der Name bei der Auswertung falsch eingetragen. Mein fehler nicht richtig nachgedacht! Um dies zu vermeinden sollte eine MsgBox oder eine neue UserForm aufgehen wo dann das geschlecht ausgewählt und mit OK bestätigt wird. Eine UF (Auswahl) habe ich erstellt. Weis aber noch Nicht wie ich diese mit einbinden kann. Habe die Datei nochmals mit angehangen.
Ich hoffe ihr könnt mir helfen. PS: Wie der ablauf mit der Auswertung sein soll werde ich wahrscheinlich nacher noch einstellen!
das Eintragen in die Tabelle Auswertung war an der falschen Stelle und ich hatte es wohl nicht genau genug getestet. :16:
Ich habe jetzt auch eingefügt, das die Buttons zurück gesetzt werden. Ist meiner Meinung nach besser als hier eine extra UF zu benutzen.
Code:
Private Sub CommandButton2_Click() ' Club auswählen und Namen eintragen Dim rngZelle As Range Dim lngZeile As Long Dim lngZaehler As Long Dim lngSpalte As Long Dim blnVorhanden As Boolean Dim lngLetzte As Long
'falls ein OptionButton ausgewählt ist If OptionButton1.Value Xor OptionButton2.Value Then ' Club ausgewählt und Name/Vorname eingetragen If ComboBox12 <> "" And TextBox1 <> "" And TextBox11 <> "" Then ' Zeile mit Clubname suchen Set rngZelle = Columns(2).Find(ComboBox12, lookat:=xlWhole, LookIn:=xlValues) ' Clubname gefunden If Not rngZelle Is Nothing Then ' es sind noch keine Namen eingetragen If rngZelle.Row + 2 > rngZelle.End(xlDown).Row Then ' Zeile einfügen Rows(rngZelle.Row + 2).Insert shift:=xlDown ' Name und Vorname in die neue Zeile rngZelle.Offset(2, -1) = TextBox1 rngZelle.Offset(2, 0) = TextBox11 ' Format kopieren und in neue Zeile übertragen Range(rngZelle.Offset(1, -1), rngZelle.Offset(1, 43)).Copy rngZelle.Offset(2, -1).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False ' Füllfarbe zurücksetzen, damit Spalten für Gesamt nicht gelb formatiert sind Range(rngZelle.Offset(2, -1), rngZelle.Offset(2, 43)).Interior.ColorIndex = xlNone Else ' Schleife über alle Namen, die zum betreffenden Club gehören For lngZaehler = rngZelle.Offset(2, 0).Row To rngZelle.End(xlDown).Row ' Name und Vorname stimmen mit TextBoxen überein If Cells(lngZaehler, 1) = TextBox1 And Cells(lngZaehler, 2) = TextBox11 Then ' Variable auf True setzen blnVorhanden = True ' Schleife verlassen Exit For End If Next lngZaehler ' Variable ist True If blnVorhanden Then MsgBox "Diesen Spieler gibt es bereits" Else ' nach dem letzten Spieler eine Zeile einfügen Rows(rngZelle.End(xlDown).Row + 1).Insert shift:=xlDown ' Name und Vorname in die neue Zeile Cells(rngZelle.End(xlDown).Row + 1, 1) = TextBox1 Cells(rngZelle.End(xlDown).Row + 1, 2) = TextBox11 ' Format kopieren und in neue Zeile übertragen Range(Cells(lngZaehler - 1, 1), Cells(lngZaehler - 1, 42)).Copy Cells(lngZaehler, 1).PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False End If End If 'Es muß die Spalte entsprechend dem Geschlecht angegeben werden If OptionButton1.Value Then lngSpalte = 7 ElseIf OptionButton2.Value Then lngSpalte = 13 End If 'und die letzte Zeile entsprechend dem Geschlecht gesucht werden With Worksheets("Auswertung") lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, lngSpalte)), .Cells(.Rows.Count, lngSpalte).End(xlUp).Row, .Rows.Count) lngLetzte = lngLetzte + 1 .Cells(lngLetzte, lngSpalte) = TextBox1 .Cells(lngLetzte, lngSpalte).Offset(, 1) = TextBox11 .Cells(lngLetzte, lngSpalte).Offset(, 2) = ComboBox12 End With ' TextBoxen und Set-Variable leeren TextBox1 = "" TextBox11 = "" Set rngZelle = Nothing 'die Buttons auf false setzen OptionButton1.Value = False OptionButton2.Value = False ComboBoxenFuellen End If Else MsgBox "Bitte Club auswählen und Namen/Vornamen eintragen" End If 'falls kein Geschlecht ausgewählt Else MsgBox "Das Geschlecht auswählen!" End If End Sub
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • michel34497