Hallo Leute,
ich habe in VBA ein Userform für Excel gebastelt, das drei Optionsfelder enthält. In Abhängigkeit davon, welches davon ausgewählt wird, sollen verschiedene Aktionen ausgeführt werden. Dafür habe ich public die Variable filter als byte deklariert, die dann die Werte 0, 1 oder 2 zugewiesen bekommt. Danach will ich mit Select Case die Aktionen laufen lassen die ich brauche.
Jetzt habe ich folgendes im Code stehen:
Private Sub ob\_stunden\_filter\_Click()
Set usr\_dialog.filter = 1
End Sub
nun erscheint beim Compilieren obige Fehlermeldung. Ich bin sicher, dass es kein großes Ding ist, aber ich als Anfänger irgendwas falsch deklariert o.ä. habe. Bin auch in der Theorie nicht 100% fit. Ist es in solchen Fällen überhaupt richtig, das so zu programmieren oder geht es vielleicht auch einfacher und ohne public-Variable?
Private Sub ob\_stunden\_filter\_Click()
Set usr\_dialog.filter = 1
End Sub
Hi Micha,
kannst du allen relevanten Code posten und in welchen Modulen er jeweils steht?
Gruß
Reinhard
Also alles spielt sich im Code des Userforms ab, wenn ich im Projektexplorer doppelt drauf klicke.
die ersten beiden Zeilen lauten:
Option Explicit
Public filter As Byte
dann folgen die Prozeduren für alle möglichen Steuerelemente, unter anderem eben auch die Optionsfelder, bei denen es ja hakt
Private Sub ob\_kein\_filter\_Click()
Set usr\_dialogfilter = 0
End Sub
Private Sub ob\_projekt\_filter\_Click()
Set usr\_dialog.filter = 2
End Sub
Private Sub ob\_stunden\_filter\_Click()
Set usr\_dialog.filter = 1
End Sub
mehr soll in den Klick-Prozeduren der Optionsfelder gar nicht passieren. es soll einfach der Variable Filter ein unterschiedlicher Wert zugewiesen werden, der dann beim Klick auf einen noch zu programmierenden Weiter-Button ausgelesen wird, um festzustellen, welche weiteren Aktionen durchgeführt werden müssen.
Weitere wichtige Informationen fallen mir nicht ein. Immer wenn ich die Userform ausführe, schmiert sie genau dann mit o.g. Fehler ab, wenn ich eins der Optionsfelder betätige
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi Micha
Also alles spielt sich im Code des Userforms ab, wenn ich im
Projektexplorer doppelt drauf klicke.die ersten beiden Zeilen lauten:
Option Explicit
Public filter As Byte
Lösche das „Public filter As Byte“ und stelle es zu Anfang von Modul1
dann folgen die Prozeduren für alle möglichen Steuerelemente,
unter anderem eben auch die Optionsfelder, bei denen es ja
hakt
Private Sub ob_kein_filter_Click()
Set usr_dialogfilter = 0
End Sub
Private Sub ob_projekt_filter_Click()
Set usr_dialog.filter = 2
End Sub
Private Sub ob_stunden_filter_Click()
Set usr_dialog.filter = 1
End Sub
Probier mal:
Option Explicit
Public filter As Byte
Private Sub ob\_kein\_filter\_Click()
filter = 0
End Sub
Private Sub ob\_projekt\_filter\_Click()
filter = 2
End Sub
Private Sub ob\_stunden\_filter\_Click()
filter = 1
End Sub
oder gleich so, dann ersparst du dir die Public-Variable:
Private Sub ob\_kein\_filter\_Click()
call weiter(0)
End Sub
Private Sub ob\_projekt\_filter\_Click()
call weiter(2)
End Sub
Private Sub ob\_stunden\_filter\_Click()
call weiter(1)
End Sub
In Modul1 dann
Option Explicit
Sub weiter(byval Wert as byte)
MsgBox Wert
End Sub
mehr soll in den Klick-Prozeduren der Optionsfelder gar nicht
passieren. es soll einfach der Variable Filter ein
unterschiedlicher Wert zugewiesen werden, der dann beim Klick
auf einen noch zu programmierenden Weiter-Button ausgelesen
wird, um festzustellen, welche weiteren Aktionen durchgeführt
werden müssen.
Weitere wichtige Informationen fallen mir nicht ein. Immer
wenn ich die Userform ausführe, schmiert sie genau dann mit
o.g. Fehler ab, wenn ich eins der Optionsfelder betätige
Vielen Dank, das sind GENAU die Tipps, die mich weiter gebracht haben!