Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variable via Button übergeben

Variable via Button übergeben
15.07.2022 14:27:43
Andi
Moin VBA Profis,
ich habe gerade etwas Probleme bei der Übergabe eines Wertes einer Variable.
Ich habe eine Userform mit 6 Buttons erstellt. Die Buttons haben dieselbe Funktion (Lagerbestand + & -) aber die Funktion findet jeweils in einer anderen Row bzw. für einen anderen Artikel statt.
Aus diesem Grund habe ich mir überlegt für alle Buttons den selben Sub zu verwenden. Dies Funktioniert allerdings nur wenn ich meine Variable "intStockVol" im Programm von jedem Button definiere und den definierten Wert mit Betätigung des Buttons an den Sub weitergebe.
Das heißt:
Button 1 --> intStockVol = 1
Button 2 --> intStockVol = 2
Button 3 --> intStockVol = 3
...
VBA liegt mir eigentlich ganz gut aber die Übergabe von Variablen oder Werten bereit mir immer wieder Schwierigkeiten.
Kann mir hier vielleicht jemand weiter helfen?
Sorry, ich habe noch keinen Code parat, da ich gerade erst mit dem Programm beginne.
Schönes Wochenende und liebe Grüße
Andi
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable via Button übergeben
15.07.2022 14:55:18
GerdL
Moin Andi,
ich finde daran nichts Verwerfliches. Eine Codezeile im Button_Clicfk brauchst du sowieso.
Modul1:

Public  intStockVol  As Integer
Userformmodul:

Private Sub CommandButton1_Click()
intStockVol = 1
MsgBox intStockVol
End Sub
Private Sub CommandButton2_Click()
intStockVol = 2
MsgBox intStockVol
End Sub
Private Sub CommandButton3_Click()
intStockVol = 3
MsgBox intStockVol
End Sub
Gruß Gerd
Anzeige
AW: Variable via Button übergeben
18.07.2022 07:07:35
Andi
Guten Morgen,
danke, so ist das ja easy. Ich dachte ich muss das irgendwie über byVal oder byRef übergeben.
Vielen Dank.
Benutze die Tag-Eigenschaft
15.07.2022 16:22:18
Beverly
Hi Andi,
jedes Steuerelement auf einem UserForm (und auch das UserForm selbst) besitzt die Eigenschaft "Tag" - das kommt aus dem Englischen und heißt "Schild". Diese Eigenschaft wurde extra für die Programmierer geschaffen, um dort Informationen unterbringen zu können ohne sie im Code als Variablen/Konstanten definieren zu müssen. Man kann sie bei Bedarf immer wieder verwenden bzw. abrufen, wobei man die Tag-Eigenschaften zur Laufzeit belegen oder fix eintragen kann. Da in deinem Fall die Ziffern 1-3 von vornherein feststehen, kannst du sie von Hand fix in die Tag-Eigenschaft bei den entsprechenden Button eintragen. Beim Abrufen bzw. Verwenden der Tag-Inhalte ist zu beachten, dass ein Tag immer Text enthält, bei numerischen Werten musst du diese folglich noch umwandeln: also wäre das bei dir z.B. für Button1 intStockVol = CLng(Button1.Tag) - so kannst du sie dann weiterverwenden.
Bis später
Karin

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variable via Button übergeben in VBA


Schritt-für-Schritt-Anleitung

Um eine VBA-Variable übergeben zu können, wenn Du einen Button auf einem Userform klickst, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle eine Userform:

    • Füge eine Userform hinzu, indem Du mit der rechten Maustaste im Projektfenster auf „VBA-Projekt“ klickst und „Userform einfügen“ wählst.
  3. Füge Buttons hinzu:

    • Ziehe 3 CommandButtons auf die Userform.
  4. Definiere die Variable:

    • Füge im Modul1 die folgende Zeile ein, um die Variable zu deklarieren:
      Public intStockVol As Integer
  5. Füge Code zu den Buttons hinzu:

    • Doppelklicke auf jeden Button und füge den entsprechenden Code ein:

      Private Sub CommandButton1_Click()
       intStockVol = 1
       MsgBox intStockVol
      End Sub
      
      Private Sub CommandButton2_Click()
       intStockVol = 2
       MsgBox intStockVol
      End Sub
      
      Private Sub CommandButton3_Click()
       intStockVol = 3
       MsgBox intStockVol
      End Sub
  6. Teste die Userform:

    • Schließe den VBA-Editor und starte die Userform, um die Funktionalität zu testen.

Häufige Fehler und Lösungen

  • Fehler: Variable nicht definiert

    • Stelle sicher, dass die Variable intStockVol im richtigen Modul deklariert ist. Sie sollte im Modul1 definiert sein, nicht im Userform-Modul.
  • Fehler: Button funktioniert nicht

    • Überprüfe, ob der Button korrekt mit dem Klick-Ereignis verbunden ist. Doppelklicke auf den Button, um den Code zu überprüfen.

Alternative Methoden

Eine andere Möglichkeit, um eine VBA-Variable zu übergeben, ist die Verwendung der Tag-Eigenschaft der Buttons. So kannst Du die Werte direkt in den Eigenschaften der Buttons speichern:

  1. Klicke auf jeden Button und gehe zu den Eigenschaften.
  2. Setze die Tag-Eigenschaft für Button 1 auf 1, für Button 2 auf 2, usw.

Der Code für die Buttons könnte dann so aussehen:

Private Sub CommandButton1_Click()
    intStockVol = CLng(CommandButton1.Tag)
    MsgBox intStockVol
End Sub

Private Sub CommandButton2_Click()
    intStockVol = CLng(CommandButton2.Tag)
    MsgBox intStockVol
End Sub

Private Sub CommandButton3_Click()
    intStockVol = CLng(CommandButton3.Tag)
    MsgBox intStockVol
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Übergabe von Variablen über Buttons in Deiner Anwendung nutzen kannst:

  1. Lagerbestandsverwaltung:

    • Verwende die Buttons, um den Lagerbestand eines Produkts zu erhöhen oder zu verringern, indem Du die Variable intStockVol anpasst.
  2. Datenbearbeitung:

    • Nutze die Buttons, um verschiedene Datensätze in einer Tabelle auszuwählen und die Werte in einer Variablen zu speichern, bevor Du mit ihnen weiterarbeitest.

Tipps für Profis

  • Verwende ByRef und ByVal:

    • Wenn Du Variablen an Funktionen oder Subs übergibst, achte darauf, ob Du mit ByRef (Referenz) oder ByVal (Wert) arbeiten möchtest. Dies kann die Performance und die Flexibilität Deines Codes beeinflussen.
  • Nutze die Tag-Eigenschaft:

    • Die Tag-Eigenschaft der Steuerelemente ist eine hervorragende Methode, um Informationen zu speichern, ohne zusätzliche Variablen zu deklarieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Werte gleichzeitig übergeben?
Du kannst ein Array verwenden, um mehrere Werte zu speichern und sie dann in Deinem Sub verarbeiten.

2. Was ist der Unterschied zwischen ByRef und ByVal?
ByRef übergibt eine Referenz auf die Variable, während ByVal eine Kopie des Wertes übergibt. Bei Änderungen an ByRef wird die ursprüngliche Variable ebenfalls geändert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige