Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel Button





Frage

Hallo, Ich habe eine Frage bezüglich Buttonerstellung in einer Excel Datei. Also es geht darum das ich eine Tabelle bearbeiten möchte die einer Fussballtabelle ähnelt. Ich möchte also einen Button haben bei dem in der Zeile "Punkte" ein Wert X DAZU gerechnet wird wenn ich auf diesen Button klicke. Beispiel: Spieler A hat zur Zeit 23 Punkte und ich möchte durch einen Klick auf den Button den Wert X dazu rechnen lassen. Bisher habe ich nur rausbekommen wie man einen Wert in eine Zelle dazu bekommt aber nicht wie man einen Wert zu einem Wert dazu addiert. Wer kann helfen? Lieben Gruß aus Hamburg

Antwort 1 von coros

Moin Buntekukeln,

Deine Angaben sind etwas wage. Meinst Du mit Zeile wirklich eine Zeile oder etwa doch eher eine Spalte? Dann müsste man wissen, ist es immer die gleiche Zeile oder die gleiche Zelle, in der das Ergebnis um den Wert X erhöht werden soll? Ist der Wert X fix oder ändert der sich? Woher stammt der Wert X?

Wie Du siehst eine Menge Fragen und das sind nur einige. Ich schreibe Dir hier jetzt mal einen VBA Code hin, der Dir das Grundprinzip solch einer Berechnung aufzeigen soll. Kopiere diesen VBA Code in das VBA Projekt des Tabellenblattes, in dem der Button eingefügt werden soll. Außerdem musst Du, damit dieser Code auch bei Dir funktioniert, den Button aus der Symbolleiste "Steuerelement-Toolbox (musst Du eventuell erst über Ansicht => Symbolleisten einblenden) in Dein Tabellenblatt einfügen.

Option Explicit

Private Sub CommandButton1_Click()
Range("A1") = Range("A1") + 1
End Sub


Mit dem Code wird immer der Wert aus Zelle A1 um die Zahl 1 erhöht wenn Du den Button betätigst.

Wenn DU etwas genaueres benötigst, musst Du wie schon oben beschrieben Dich ein wenig mehr über solche Dinge wie Aufbau Deiner Tabelle usw. auslassen.

Ich hoffe, Du kommst aber erst mal mit dem Beispiel klar. Wenn nicht, dann melde Dich bitte wieder.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Buntekugeln

Super Danke Oiver,

Ich werde es mal damit versuchen.
Aber um es noch einmal zu verdeutlichen es geht tatsächlich darum einen Button in eine Zelle zu setzen bzw in mehrere zellen.
Es geht im Prinzip um eine Tabelle im Ligamodus.
In dieser Tabelle stehen also die NAmen untereinander (es sind ca 200Namen) und rechts neben den Namen stehen die Punkte der User.
Jetzt will ich mir im endeffekt nur das rechnen und das ewige hin und her scrollen sparen und per Click einen Wert zu einem bestehenden dazu addieren. Dabei sollte es sich um einen Button handeln der immer 1 Punkt dazu addiert weil wir immer zwischen einem und 45 Punkten verteilen.
Also gehe ich mal davon aus das in jede Zeile also neben jede Punktzahl ein Button sein sollte oder gibt es eine möglichkeit das ich ein Feld erstellen kann in dem ich einfach nur die entsprechende Zelle und die Punkte eingeben kann und das dann bewirkt das der eingegebene Wert in die eingegebene Zelle eingefügt wird ?
Lieben Gruß Buntekugeln
Du kannst dir die Tabelle ja mal unter www.buntekugeln.de und dann unter Tabelle ansehen.
Danke für deine Hilfe

Antwort 3 von coros

Hallo Buntekugeln,

ich weiß jetzt zwar nicht, ob Du noch eine Lösung benötigst, auch im Hinblick auf Deine Reaktionszeit, wenn ich mir das Datum Deines ersten und des letzten Beitrags mal so ansehe, aber ich würde das nicht über Buttons lösen.

Ich habe mir die Spielerliste mal auf der HP angesehen und gehe mal davon aus, dass analog dazu auch Deine Exceltabelle aussieht. Sprich, der Rang befindet sich in Spalte A, der Spielername in Spalte B und die Punkte in Spalte C. Mein Vorschlag wäre, das über eine ComboBox (Auswahlfeld) und einer TextBox zu realisieren. Blende Dir dazu mal die Symbolleiste "Steuerelement-Toolbox" über die Menüleistenpunkte "Ansicht => Symbolleisten". In dieser Symbolleiste findest Du an der 5. Stelle von links die TextBox und an der 9. Stelle von links die ComboBox. Klicke jedes Feld einmal an und positioniere die Boxen an irgendwo in Deinem Tabellenblatt mit den Speilernamen. Abschließend betätige bitte noch in der Symbolleiste den 1. Button von links, um den Entwurfsmodus wieder zu beenden. Danach kopiere den nachfolgenden Code in das VBA-Projekt des Tabellenblattes, in das Du die beiden Felder eingefügt hast.

Option Explicit

Public Wiederholungen As Integer, Auswahl As String
 
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And TextBox1.Text <> "" Then
For Wiederholungen = 3 To Range("B65536").End(xlUp).Row
If Cells(Wiederholungen, 2) = ComboBox1.Text Then
Cells(Wiederholungen, 3) = Cells(Wiederholungen, 3) + CInt(TextBox1.Text)
End If
Next
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Wiederholungen As Integer
Auswahl = ComboBox1.Text
ComboBox1.Clear
For Wiederholungen = 3 To Range("B65536").End(xlUp).Row
ComboBox1.AddItem Cells(Wiederholungen, 2)
Next
ComboBox1.Text = Auswahl
End Sub


Mit dem Code wird dir die ComboBox (das Auswahlfeld) mit den Daten aus Spalte B, also den Spielernamen, gefüllt. Dort wählst Du einen Namen aus. In das Textfeld trägst Du nun die Punktezahl ein, die dem Spieler auf sein Punktekonto dazu addiert werden soll. Wenn Du nach der Eingabe in der TextBox die Entertaste betätigst, wird dem ausgewählten Spieler die Punkte dazu addiert.

Das wäre mal ein Lösungsvorschlag, den man aber auch noch anpassen könnte. Anpassen musst Du auf jeden Fall den Code, wenn nicht der Rang, der Spielername und die Punkte sich in den von mir einleitend geschrieben Spallten stehen.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte. Wobei ich mal davon ausgehe, dass da wieder 1 - 2 Monate vergehen werden. ;o)

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von buntekugeln

Hallo Oliver,

*schäm* also erst ma sry das ich so lange gebraucht habe für die Antwort.

Aber ich hatte einiges zu tun !

Ich werde es nochmal mit dem Code testen und dann melde ich mich wieder !

Vielen Dank noch mal !

Antwort 5 von Buntekugeln

Hallo Oliver,
hmm also ich habe das mit dem Code nicht so ganz hinbekommen....
Also was ich schon hinbekommen habe ist die Text und die ComboBox einzufügen.
Das VBA Projektblatt habe ich auch gefunden und laut deiner Anleitung auf Deiner HP eingefügt.
Soweit alles gut ich denke aber das es an meiner fehlenden Code Kenntniss hapert. Ich wüsste also nicht wie ich den Code ändern sollte damit er funktioniert.
Ich stelle dir hier einfach mal einen screenshot von dem Arbeitsblatt rein und bitte Dich wenn es nicht zu unhöflich ist den Code dem entsprechend zu ändern.
Ich danke Dir schon jetzt im vorraus dafür.

http://www.gwebspace.de/bjoerndraeger/tabelle.JPG

Also im Moment mache ich das noch so, daß ich in Spalte "G" die Punkte Manuell addiere In Spalte "D" stehen die Usernamen.
Also wie gesagt Danke schon mal im vorraus

Antwort 6 von coros

Moin Buntekugeln,

kein Problem. Nachvolgend der geänderte Code, der, wenn Du ihn in das VBA Projekt des Tabellenblattes, von dem Du den Screenshot gemacht hast, einfügst, funkzionieren sollte.

Option Explicit

Public Wiederholungen As Integer, Auswahl As String

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And TextBox1.Text <> "" Then
For Wiederholungen = 4 To Range("D65536").End(xlUp).Row
If Cells(Wiederholungen, 4) = ComboBox1.Text Then
Cells(Wiederholungen, 6) = Cells(Wiederholungen, 6) + CInt(TextBox1.Text)
End If
Next
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Wiederholungen As Integer
Auswahl = ComboBox1.Text
ComboBox1.Clear
For Wiederholungen = 4 To Range("D65536").End(xlUp).Row
ComboBox1.AddItem Cells(Wiederholungen, 4)
Next
ComboBox1.Text = Auswahl
End Sub


Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von Buntekugeln

HAllo Oliver,

Also erstmal ein sehr großes Lob an Dich !
Der Code funktioniert einwandfrei.
Naja fast einwandfrei.....
Denn er addiert den Wert den ich eingebe zwar zum richtigen Spielernamen aber in die Falsche Spalte.
Der eingegebene Wert erscheint im Feld "Besonderheiten" (Spalte F) Nicht in der Punktespalte (Spalte G).

Also möchte ich Dich ein letztes mal bitten, diesen Code nochmal zu ändern.

Was genau wird denn da im Code geändert ? Bin ganz schön Neugierig geworden jetzt.

Denn Dein Lösungsvorschlag wäre echt eine Prima Hilfe und super erleichterung für mich !

Noch mal mein Lob an Dich

Lieben Gruß

Björn

Antwort 8 von coros

Hi Björn,

sorry, das war ein kleiner Schusseligkeitsfehler von mir. Ich hatte die Spalten (für die Spaltenindexnummer) durchgezählt und dabei ist mir nicht aufgefallen, dass die Spalte E dort ausgeblendet ist. Nachfolgend nun also die Code wie sie funktionieren sollten.

Option Explicit 

Public Wiederholungen As Integer, Auswahl As String 

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
If KeyCode = 13 And TextBox1.Text <> "" Then 
For Wiederholungen = 4 To Range("D65536").End(xlUp).Row 
If Cells(Wiederholungen, 4) = ComboBox1.Text Then 
Cells(Wiederholungen, 7) = Cells(Wiederholungen, 7) + CInt(TextBox1.Text) 
End If 
Next 
End If 
End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim Wiederholungen As Integer 
Auswahl = ComboBox1.Text 
ComboBox1.Clear 
For Wiederholungen = 4 To Range("D65536").End(xlUp).Row 
ComboBox1.AddItem Cells(Wiederholungen, 4) 
Next 
ComboBox1.Text = Auswahl 
End Sub 


Die Änderung wurde in dem Code in der Zeile

Cells(Wiederholungen, 6) = Cells(Wiederholungen, 6) + CInt(TextBox1.Text)


gemacht. Die Zahl 6 (Spaltenindexnummern) wurde durch die Zahl 7 ersetzt. Die Zahl sagt die Spalte aus. Eine 1 steht für Spalte A, eine 2 für Spalte B, eine 3 für Spalte C usw. Wenn Du die Spaltenindexnummern mal sehen möchtest, gehe in der Menüleiste mal auf "Extras => Optionen" und dort dann auf die Registerkarte "Allgemein". Aktiviere mal unter "Einstellungen" den Punkt "Z1S1-Bezugsart". Nach dem Klick auf OK steht in den Spalten nicht mehr die Buchstaben, sondern die Spaltenindexzahlen.

Ich hoffe, Du kommst klar. Ansonsten melden.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von Buntekugeln

Oliver Du bist der Größte !

Es funktioniert und funktioniert und funktioniert.

Alles Super Perfekt und viel Einfacher als Vorher.

Vielen Dank und ganz liebe Grüße aus Hamburg

Björn

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: