Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Code kopieren

VBA Code kopieren
20.03.2024 10:52:10
Freki
Hallo, ich möchte eine einfach benutzbare Liste haben mit der ich Fehlende Bestände in Fächern vermerke und zum auffüllen einfach erfassen kann.
Ich habe mir dafür Togglebutton als Mittel zum Zweck gesucht.

Je Produkt gibt es bis zu 15 Fächer mit unterschiedlicher Stückzahlt, die je nach Produkt zwischen 1 und 20 variieren kann.
Ich habe bisher die Formel soweit zusammen gegoogelt, dass folgende Kriterien erfüllt sind.

Durch druck auf den Togglebutton
- ist dieser aktiviert
- true und in false trägt er als Name die Stückzahl des Faches
- aktiviert wird der Name bzw. die Zahl in fett und rot abgebildet
- bei Druck wird in Zelle B2 +5 addiert und bei erneutem Druck um 5 reduziert
- den unten stehen Code habe ich händisch auf drei Buttons kopiert, dessen Summe in B2 abgebildet wird.
- Wenn ich alle drei Buttons (5, 5 und 10) drücke, sehe ich also in Zelle B2, dass 20 Stück fehlen und in welche Fächer leer sind

https://www.herber.de/bbs/user/168162.xlsm

Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
ToggleButton1.ForeColor = RGB(255, 0, 0)
ToggleButton1.Caption = "5"
ActiveSheet.Range("B2").Value = Range("B2").Value + 5
Else
ToggleButton1.ForeColor = RGB(0, 0, 0)
ToggleButton1.Caption = "5"
ActiveSheet.Range("B2").Value = Range("B2").Value - 5
End If
End Sub

---------------
Sooo jetzt kommt das spanende es geht um ca. 100 Produkte, die jeweils bis zu 15 Fächer haben ... Gibt es eine Möglichkeit, die Buttons zu kopieren ohne jeden händisch anpassen zu müssen?

Alternativ nehme ich auch gerne einen komplett anderen Ansatz wenn als Idee vorhanden.

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code kopieren
20.03.2024 11:28:14
Oberschlumpf
Hi,

versuch es hiermit:
https://www.herber.de/bbs/user/168165.xlsm

Im Klick-Ereignis jedes Tgl-Buttons steht nun:



Private Sub ToggleButton2_Click()

With ToggleButton1
sbChgVal .Name, .Caption, .Value
End With

End Sub

Private Sub ToggleButton2_Click()

With ToggleButton2
sbChgVal .Name, .Caption, .Value
End With

End Sub

Private Sub ToggleButton3_Click()

With ToggleButton3
sbChgVal .Name, .Caption, .Value
End With

End Sub


Achte darauf, dass hinter jedem WITH der richtige Name des Tgl-Buttons steht, den du gerade angeklickt hast!

Nach Klick auf einen der Button wird das Makro sbChgVal aufgerufen, welches die Werte "ButtonName", "ButtonText" und "ButtonZustand" als Parameter erhält.



Sub sbChgVal(ByVal tgbname As String, ByVal wert As Integer, ByVal zustand As Boolean)

With ActiveSheet
If zustand = True Then
.ToggleButton1.ForeColor = RGB(255, 0, 0)
' ActiveSheet.ToggleButton1.Caption = "5" 'wozu dem Tglbutton - noch mal - den Wert zuweisem, den er doch schon hat???
.Range("B2").Value = Range("B2").Value + wert
Else
.ToggleButton1.ForeColor = RGB(0, 0, 0)
' ActiveSheet.ToggleButton1.Caption = "5" 'wozu dem Tglbutton - noch mal - den Wert zuweisem, den er doch schon hat???
.Range("B2").Value = Range("B2").Value - wert
End If
End With

End Sub

In Abhängigkeit der Parameter wird jeweils der richtige Button rot gefärbt und die Zelle B2 erhält entweder + Wert des Buttons oder - Wert des Buttons.

Deine Aufgabe ist nun....einfach!

Füge einfach jedem weiteren Tgl-Button ins Klick-Ereignis die einzigen 3 Codezeilen hinzu, die auch in den 3 Tgl-Button enthalten sind.
...noch mal...achte darauf, dass immer der richtige Tgl-Button-Name hinter WITH steht!!

Hilfts?
muss ja, denn wenns mit den 3 Button funktioniert, wieso sollte es nich auch mit Button 4,5,6 usw funktionieren...

Ciao
Thorsten
Anzeige
AW: VBA Code kopieren
20.03.2024 13:58:17
daniel
Hi

du kannst statt der ActiveX-Controls auch Formularfeldbuttons verwenden.
bei Formularfeldbuttons schreibst du das Makro, das bei Klick ausgeführt werden soll, in ein allgemeines Modul und weist des dann dem Button zu. Dabei kannst du das selbe Makro auch mehreren Buttons zuweisen (dh du brauchst für viele Buttons trotzdem nur ein Makro) und wenn du einen Button mit Makro kopierst, dann hat auch die Kopie dieses Makro. Damit du bei mehreren Buttons unterschiedlich reagieren kannst, kannst du in diesem Makro mit Application.Caller den Namen des aufrufenden Buttons ermitteln.
mit ActiveSheet.Shapes(Application.Caller).TopLeftCell bekommst du die Zelle, in welcher sich die linke obere Ecke des aufrufenden Buttons befindet, so dass du davon ausgehend dann berechnen kannst, in welcher Zelle dieser Button den Wert verändern muss.

Die Formularfeldbuttons haben zwar keinen ToggleButton, aber da du ja sowieso die Textfarbe ändern willst, kannst du darüber ermitteln, welchen Zustand der Button hat, so dass du mit dem einfachen Commandbutton einen ToggleButton simulieren kannst.

noch einfacher wäre, du verzichtest ganz auf Buttons und nutzt das BeforeDoubelClick-Event, um mit einem Doppelklick auf eine Zelle ein Makro zu starten.
auch hier bekommst du über die Variable Target die angeklickte Zelle, welche du dann verwenden kannst, um die entsprechende Aktion auszuführen.

Das wären mal zwei andere Ansätze.
AcitveX-Controls sind nicht geeignet, wenn man viele und das auch noch in variabler Anzahl benötigt. Um das zu beherrschen, müsstest du Klassenprogrammierung lernen, und das ist vom Niveau her mindestens eine Stufe weiter.

Gruß Daniel
Anzeige
AW: VBA Code kopieren
20.03.2024 14:37:11
Onur
Warum so kompliziert?
Plaziere die Buttons ganz oben und fixiere das Fenster.
Wenn du mit ActiveCell arbeitest statt mit z.B. "B2§, dann reichen die drei Buttons für ALLE Fächer.
Guckst du:
https://www.herber.de/bbs/user/168176.xlsm

Man müsste noch eine Sicherung einbauen, damit nur bestimmte Zellen als Fächer zugelassen werden - z.B. wenn Farbe der aktuellen Zelle gelb, dann ....., sonst mache nix.
AW: VBA Code kopieren
21.03.2024 08:51:12
Oberschlumpf
und wann antwortest du?!
AW: VBA Code kopieren
20.03.2024 14:54:10
daniel
muss man sich nicht für jedes Fach merken, ob der jeweilige Button geklickt ist oder nicht?
AW: VBA Code kopieren
20.03.2024 15:02:01
Onur
Ich habe leider keine Ahnung, wie genau er die Verwendung der Buttons geplant hat. Ebenso ist mir Unklar, wozu das Ganze....
Anzeige
AW: VBA Code kopieren
20.03.2024 15:26:29
daniel
dann lies doch einfach mal die Eingangsfrage. Da beschreibt er, wie die Buttons verwendet werden sollen.
AW: VBA Code kopieren
20.03.2024 15:36:13
Onur
Halte dich einfach raus aus den Antworten Anderer.
Lass mich endlich in Ruhe und trolle woanders herum !
Wenn Fragen aufkommen, wird sie schon der Threaderöffner stellen.
AW: VBA Code kopieren
20.03.2024 15:42:43
daniel
oder jemand anderes, der sich ebenfalls für deine Lösung interessiert.
AW: VBA Code kopieren
20.03.2024 15:47:05
Onur
"Interessiert" ist das Stichwort. Also jeder ausser dir.
Du interessierst dich nicht wirklich dafür, es geht dir immer nur um das Besserwissen und das Klugscheissen.
AW: VBA Code kopieren
20.03.2024 16:31:47
daniel
naja, besser wissen ist für Lösungen immer hilfreich, als einfach mal was schreiben, obwohl man noch nicht genügend Informationen hat, um die Aufgabenstellung vollständig zu verstehen.
Anzeige
AW: VBA Code kopieren
20.03.2024 16:53:15
Oppawinni
Könnt ihr Beiden euch vielleicht mal auf ein Bier treffen und euren Diskurs mal extern klären. Ich würde notfalls auch das Bier spendieren.
AW: VBA Code kopieren
20.03.2024 14:26:44
Onur
Warum so kompliziert?
Plaziere die Buttons ganz oben und fixiere das Fenster.
Wenn du mit ActiveCell arbeitest statt mit z.B. "B2§, dann reichen die drei Buttons für ALLE Fächer.
Guckst du:
https://www.herber.de/bbs/user/168176.xlsm
AW: VBA Code kopieren
20.03.2024 14:35:25
Onur
Sorry, falscher Zweig.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige