viper23
Goto Top

wie erstelle ich in Excel eine Funktion mit Buttons

Guten Morgen,

ich will in Excel einen Button erstellen, der, wenn man drauf klickt, einen Wert in einem anderen Tabellenblatt hinzuaddiert.

also:

in Tabellenblatt 1 steht eine Liste mit Namen und Attributen
in Tabellenblatt 2 gebe ich nun einen Namen und einen Attributwert ein

wenn ich auf den Button klick, soll der Attributwert bei dem bestimmten Namen zu dem alten Attributwert addiert werden

Tabelle1:
NAME ATT
Hans 1
Marc 2
Timo 1

Tabelle 2:
NAME ATT
Hans 1 [BUTTON] <-- hier ist die eingabe

jetzt soll bei Hans 2 stehen...


bekommt man das so leicht hin?
ich weiß nicht mal, ob man einen Button einfügen kann.
danke schon mal im Vorraus

Content-Key: 88366

Url: https://administrator.de/contentid/88366

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: bastla
bastla 24.05.2008 um 13:25:02 Uhr
Goto Top
Hallo Viper23 und willkommen im Forum!

Unter der Annahme, dass es nur sinnvoll sein kann, zu bereits vorhandenen Namen den Attributwert zu verändern, böte sich eigentlich zur Auswahl des Namens ein Dropdown an. Die Umsetzung könnte so erfolgen (Annahme: Deine Beispiele für Tabelle1 und Tabelle2 beginnen jeweils in A1 mit der Überschrift "NAME"):
  1. Markiere in Tabelle1 alle Namen ohne die Überschrift, aber mit einer zusätzlichen Zelle am Ende der Liste (daher: A2:A5) und vergebe dafür den Bereichsnamen "Namen".

    Die leere Zelle mit aufzunehmen hat den Vorteil, dass Du die Namensliste leicht erweitern kannst, indem Du für einen neuen Namen diese Zelle (derzeit A5) markierst, über das Kontextmenü "Zellen einfügen ..." (oder mit Strg +) und die Auswahl "Zellen nach unten verschieben" wählst und so eine zusätzliche Zelle im benannten Bereich erhältst.

    Ist an keine Erweiterung gedacht, kannst Du auch nur die Namen (A2:A4) mit dem Bereichsnamen versehen - Vorteil: Damit vermeidest Du die ansonsten erscheinende leere Zeile am Ende des Dropdowns (wobei diese aber nicht allzu störend sein sollte).
     
  2. Benenne in Tabelle2 die Zelle A2 mit "Auswahl" und die Zelle B2 mit "Hinzu".
     
  3. Öffne die Symbolleiste "Formular" und "zeichne" in Tabelle2 ein "Kombinationsfeld" über der Zelle A2 ein (sodass diese und vor allem der später darin erscheindende Zahlenwert verdeckt werden) - dazu das entsprechende Symbol in der Symbolleiste anklicken und mit der Maus einen Rahmen aufziehen.
     
  4. Wähle nach einem Rechtsklick auf den Rahmen dieses Kombinationsfeldes das Register "Steuerung" (sollte ohnehin geöffnet sein) und trage dort ein: für "Eingabebereich": Namen und für "Zellverknüpfung": Auswahl
     
  5. Füge nun aus der "Format"-Symbolleiste noch eine "Schaltfläche" an der gewünschten Position hinzu, bestätige den mit "Schaltfläche1_BeiKlick" vorgeschlagenen "Makronamen" und ändere deren Beschriftung "Schaltfläche1" auf den gewünschten Text.
     
  6. Nach einem Rechtsklick auf den Rahmen des noch markierten Buttons kannst Du "Makro zuweisen..." und "Neu" wählen und so direkt in den VBA-Editor gelangen, wo Du zwischen "Sub Schaltfläche1_BeiKlick()" und "End Sub" nur noch den folgenden Code einfügen musst:
    Hinzu = Range("Hinzu").Value  
    Auswahl = Range("Auswahl").Value  
    Range("Namen").Offset(Auswahl-1,1).Cells(1).Value=Range("Namen").Offset(Auswahl-1,1).Cells(1).Value+Hinzu  
    'Range("Auswahl").Value = 0  
    'Range("Hinzu").Value = ""  
Nach dem Schließen des VBA-Editors und einem Klick an eine beliebige Stelle der Tabelle2 (um die Markierung der Schaltfläche aufzuheben) solltest Du Namen auswählen und per Klick auf den Button den in B2 eingetragenen Wert in der Tabelle1 addieren können.

Da ich nicht weiß, wie Du diese Funktionaliltät einzusetzen gedenkst, gibt es (noch) keine Form der Rückmeldung - Du kannst aber zB nach der Ausführung der Aktion den gewählten Namen aus der Anzeige im Kombinationsfeld und/oder den in B2 eingetragenen Wert entfernen lassen, indem Du das Apostroph am Anfang der Zeile 4 und/oder Zeile 5 des VBSA-Codes entfernst (zum Code gelangst Du wieder - wie bei Schritt 6 beschrieben - über das Kontextmenü des Buttons, wobei dieses Mal "Bearbeiten" zu wählen ist; alternativ dazu kannst Du den VBA-Editor auch mit Alt-F11 direkt aufrufen).

Grüße
bastla

[Edit] Formatierung angepasst [/Edit]
Mitglied: Viper23
Viper23 27.05.2008 um 09:32:34 Uhr
Goto Top
vielen vielen dank...
Das ist ja ausführlicher als ausführlich..face-smile
hat mir sehr viel gebracht, ehrlich!


Jetzt hab ich nur ein Problem:

was ich, wenn ich ne ganze Tabelle hab.

also, in Spalte A stehen namen, in Spalte B Punkte in Spalte C Entfernungsangaben, in Spalte D..., etc..
und ich will dann beim Namen 1 nur den Wert B so verändern, beim Namen 3 nur Wert C....

Wie muss dann diese Funktion aussehen, und die Tabelle?

und geht das dann überhaupt mit so nem Button?

Grüßle Viper23
Mitglied: bastla
bastla 27.05.2008 um 12:01:19 Uhr
Goto Top
Hallo Viper23!

In disem Fall könntest Du mehrere Buttons, von denen jeder ein eigenes Script aufruft, verwenden und die Änderungen nacheinander ausführen - also ersten Namen auswählen, Punkte ändern, nächsten Namen auswählen, Entfernung ändern, ...

Damit Du das Script anpassen kannst, eine kurze Erklärung dazu:

Hinzu = Range("Hinzu").Value  
Mit dieser Zeile wird der hinzuzufügende Wert aus der entsprechend benannten Zelle gelesen - Du könntest den Namen anpassen, sodass für Änderung der Punkte eine Zelle mit dem Namen "HinzuPunkte", für Änderung der Entfernung eine "HinzuEntfernung"-Zelle etc existieren. Den für dieses Script relevanten Namen gibst Du dann als "Range" an, also etwa
 Hinzu = Range("HinzuEntfernung").Value  

Auswahl = Range("Auswahl").Value  
Diese Zeile kann gleich bleiben - damit wird die laufende Nummer des gewählten Namens gelesen.

Range("Namen").Offset(Auswahl-1,1).Cells(1).Value = Range("Namen").Offset(Auswahl-1,1).Cells(1).Value + Hinzu  
Hier wird die Addition durchgeführt, wobei in der "Offset"-Angabe "Auswahl-1" gleich bleibt (wählt die richtige Zeile für den gewählten Namen aus). Der Wert 1 nach dem Komma legt die Spalte fest - wenn, wie im Beispiel, die Namen in Spalte A und die Entfernungen in Spalte C stünden, wäre zum Ändern der Entfernung hier 2 einzutragen (= Spaltenabstand in Tabelle2 zwischen Name und zu änderndem Wert).

Zusammenfassend:
Um auch Entfernungen (Spalte C) ändern zu können, erhält zunächst die Zelle Tabelle1!C2 den Namen "HinzuEntfernung", dann wird ein Button eingezeichnet und in das zugeordnete Makro eingetragen:
Hinzu = Range("HinzuEntfernung").Value   
Auswahl = Range("Auswahl").Value   
Range("Namen").Offset(Auswahl-1,2).Cells(1).Value = Range("Namen").Offset(Auswahl-1,2).Cells(1).Value + Hinzu   
Das Ganze ließe sich zwar eleganter schreiben, aber so solltest Du eigentlich damit zurechtkommen können ...

Grüße
bastla
Mitglied: Viper23
Viper23 27.05.2008 um 12:07:39 Uhr
Goto Top
vielen vielen Dank...
ich werde es gleich mal versuchen...

danke für die detaillierte und vor allem schnelle Antwort...