Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm in makro einbinden

Forumthread: UserForm in makro einbinden

UserForm in makro einbinden
20.08.2004 09:39:48
Gregor
Hallo zusammen
Ich habe eine Tabelle mit verschiedenen Spalten, ua. Min und Max. Beim Ablauf eines Markors soll der Benutzer den Wert der Spalte Min oder Max auswählen können. Dazu habe ich eine UserForm mit zwei Button Min und Max erstellt.
Mit "UserForm1.show" wird diese angezeigt. Der Benutzer wählt jetzt Min oder Max.
Die Auswahl Min soll die Spalte 21 definieren, die Auswahl Max die Spalte 22. Die gewählte Auswahl will ich als Konstante "MinMax" im Makro weiterverwenden.
zB:
Länge = Worksheets("Tabelle1").Cells(5, MinMax).Value
usw.
Wie muss ich diese Auswahl via UserForm einbinden?
Gruss und vielen Dank
Gregor
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm in makro einbinden
Michael
Hallo Gregor
Ich bin mir jetzt ned sicher ob ich das richtig verstanden hab aber cih glaub so gehts:
klick doppelt auf den jeweiligen button und dort kannst dan programmieren was passieren soll wenn er z.b. min gedrückt hat du kannst auch noch am anfang schrieben userform1.hide damit man die userfor nicht mehr sieht ;)
mfg Michael
Anzeige
AW: UserForm in makro einbinden
Gregor
Michal
Vielen Dank, ich komme aber nicht ganz weiter. Habe nun folgende Makros:
Unter Module
------------
Sub Shapes_Längen_markieren()
Dim intLastRow As Variant
Dim intcounter As Variant
Dim n As Variant
Dim Länge As Integer
Dim MinMax As String
UserForm1.Show (--> Benutzer trifft Auswahl mit Button, Makros siehe unten)
Worksheets(1).Activate
intLastRow = Cells(Rows.Count, 2).End(xlUp).Row
For intcounter = 3 To intLastRow
n = Worksheets(1).Cells(intcounter, 2).Value
Länge = Worksheets(1).Cells(intcounter, MinMax).Value
Worksheets(2).Select
ActiveSheet.Shapes(n).Select
Select Case Länge
Case Is >= 0
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 57 'Meeresgrün
Case Is >= 50
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 3 'Grelles Grün
Case Is >= 100
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 54 'Blaugrau
Case Else
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 5 'Gelb
End Select
Next intcounter
SendKeys ("{ESC}")
usw.
Unter Formulare
---------------

Private Sub CommandButton1_Click()
UserForm1.Hide
MinMax = 21
End Sub


Private Sub CommandButton2_Click()
UserForm.Hide
MinMax = 22
End Sub

Problem: Die Variable MinMax enthält nach diesem Vorgehen den Wert "", also Leer, statt 21 oder 22.
Was mache ich falsch?
Danke und Gruss
Gregor
Anzeige
AW: UserForm in makro einbinden
Michael
Den Teil im Modul unter dem Userform1.show
kopier in die zwei button ereignissen also das dan wei folgt aussieht:
Modul:
Sub Shapes_Längen_markieren()
UserForm1.Show (--> Benutzer trifft Auswahl mit Button, Makros siehe unten)
End Sub
Formulare:

Private Sub CommandButton1_Click()
UserForm1.Hide
MinMax = 21
Worksheets(1).Activate
intLastRow = Cells(Rows.Count, 2).End(xlUp).Row
For intcounter = 3 To intLastRow
n = Worksheets(1).Cells(intcounter, 2).Value
Länge = Worksheets(1).Cells(intcounter, MinMax).Value
Worksheets(2).Select
ActiveSheet.Shapes(n).Select
Select Case Länge
Case Is >= 0
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 57 'Meeresgrün
Case Is >= 50
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 3 'Grelles Grün
Case Is >= 100
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 54 'Blaugrau
Case Else
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 5 'Gelb
End Select
Next intcounter
SendKeys ("{ESC}")
usw.
End Sub


Private Sub CommandButton2_Click()
UserForm.Hide
MinMax = 22
Worksheets(1).Activate
intLastRow = Cells(Rows.Count, 2).End(xlUp).Row
For intcounter = 3 To intLastRow
n = Worksheets(1).Cells(intcounter, 2).Value
Länge = Worksheets(1).Cells(intcounter, MinMax).Value
Worksheets(2).Select
ActiveSheet.Shapes(n).Select
Select Case Länge
Case Is >= 0
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 57 'Meeresgrün
Case Is >= 50
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 3 'Grelles Grün
Case Is >= 100
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 54 'Blaugrau
Case Else
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 5 'Gelb
End Select
Next intcounter
SendKeys ("{ESC}")
usw.
End Sub

Dann müssts eigentlich funktionieren
mfg Michael
Anzeige
AW: UserForm in makro einbinden
20.08.2004 14:29:06
Gregor
Michael
Vielen Dank, so funktioniert es. Ich habe wirklich gedacht, man müsse wieder in die Prozedur im Modul zurückkehren.
Kannst du mir noch sagen, wie man defaultmässig immer den ersten Button aktiviert, ich habe das unter Hilfe nicht gefunden? Und zwar bei Msg Box wie bei UserForm.
Danke
Gregor
Anzeige
AW: UserForm in makro einbinden
Michael
Bitte
Also bei der form manchst du das folgender maßen:
1)Form öffnen
2)Rechtsklicken und "Aktivierreihenfolge" auswählen
3)dort den button der standartmäßig markiert sien soll an erste reihe stellen ;)
bei ein msgbox geht das glaub ich ned aber du kannst ja mal suchen under msgbox aktivierreihenfolge
mfg Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

UserForm in Makros einbinden für Excel


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne den Visual Basic for Applications (VBA) Editor in Excel. Füge eine neue UserForm hinzu und platziere zwei CommandButtons darauf, benenne sie z.B. in CommandButton1 (für Min) und CommandButton2 (für Max).

  2. Makro im Modul erstellen:

    Sub Shapes_Längen_markieren()
       Dim intLastRow As Variant
       Dim intcounter As Variant
       Dim n As Variant
       Dim Länge As Integer
       Dim MinMax As String
       UserForm1.Show  ' Zeigt die UserForm an
       Worksheets(1).Activate
       intLastRow = Cells(Rows.Count, 2).End(xlUp).Row
       For intcounter = 3 To intLastRow
           n = Worksheets(1).Cells(intcounter, 2).Value
           Länge = Worksheets(1).Cells(intcounter, MinMax).Value
           Worksheets(2).Select
           ActiveSheet.Shapes(n).Select
           ' Farbauswahl basierend auf dem Wert von Länge
           Select Case Länge
               Case Is >= 0
                   Selection.ShapeRange.Fill.ForeColor.SchemeColor = 57 ' Meeresgrün
               Case Is >= 50
                   Selection.ShapeRange.Fill.ForeColor.SchemeColor = 3 ' Grelles Grün
               Case Is >= 100
                   Selection.ShapeRange.Fill.ForeColor.SchemeColor = 54 ' Blaugrau
               Case Else
                   Selection.ShapeRange.Fill.ForeColor.SchemeColor = 5 ' Gelb
           End Select
       Next intcounter
       SendKeys ("{ESC}")
    End Sub
  3. Code für die Buttons hinzufügen:

    Private Sub CommandButton1_Click()
       UserForm1.Hide
       MinMax = 21
    End Sub
    
    Private Sub CommandButton2_Click()
       UserForm1.Hide
       MinMax = 22
    End Sub
  4. Testen: Führe das Makro Shapes_Längen_markieren aus und prüfe, ob die UserForm korrekt funktioniert und die richtige Spalte ausgewählt wird.


Häufige Fehler und Lösungen

  • Variable MinMax bleibt leer: Stelle sicher, dass die Zuweisung von MinMax innerhalb der Button-Click-Events erfolgt. Wenn Du UserForm1.Show im Modul verwendest, sollte die Auswahl der Schaltfläche direkt in der UserForm stattfinden.

  • UserForm schließt sich nicht: Überprüfe, ob Du UserForm1.Hide korrekt in den Button-Click-Events platziert hast.


Alternative Methoden

Eine alternative Methode zur Auswahl von Min oder Max ist die Verwendung von Dropdown-Listen (ComboBox) auf der UserForm anstelle von Buttons. Das würde es dir ermöglichen, die Auswahl effizienter zu gestalten:

Private Sub UserForm_Initialize()
    ComboBox1.AddItem "Min"
    ComboBox1.AddItem "Max"
End Sub

Private Sub CommandButton_Click()
    If ComboBox1.Value = "Min" Then
        MinMax = 21
    ElseIf ComboBox1.Value = "Max" Then
        MinMax = 22
    End If
    UserForm1.Hide
End Sub

Praktische Beispiele

In diesem Beispiel wird die UserForm verwendet, um die Farbe von Formen basierend auf Werten in einer Excel-Tabelle zu ändern. Stelle sicher, dass Deine Excel-Version die Verwendung von VBA unterstützt (z.B. Excel 2010 oder neuer).


Tipps für Profis

  • Default-Button festlegen: Um einen Button standardmäßig auszuwählen, gehe zu den Eigenschaften der UserForm, wähle "Aktivierreihenfolge" und ziehe den gewünschten Button an die oberste Stelle.

  • Fehlerbehandlung einfügen: Füge eine Fehlerbehandlung in Dein Makro ein, um unvorhergesehene Fehler abzufangen und die Benutzerfreundlichkeit zu verbessern.

On Error GoTo ErrorHandler
' Dein Code hier
Exit Sub
ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich die UserForm anpassen?
Du kannst die Größe, Farbe und Schriftart der UserForm in den Eigenschaften anpassen.

2. Kann ich mehrere UserForms gleichzeitig anzeigen?
Ja, Du kannst mehrere UserForms erstellen, jedoch sollte jede UserForm separat verwaltet werden.

3. Wie kann ich die Auswahl von Min oder Max speichern?
Die Auswahl wird in der Variablen MinMax gespeichert, die für weitere Berechnungen in Deinem Makro verwendet werden kann.

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