Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1536to1540
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
Hilfe zu VBA Code vereinfachen gesucht
27.01.2017 21:15:19
Jens
Hallo an alle fleißigen Helfer,
hab mal wieder eine Frage an Euch.
Wie lässt sich der VBA Code noch vereinfachen?
Bisher steht der im Tabellenblatt und gilt Blockweise für jeden Commandbutton.
Es sind Aktiv X Steuerelemente die eine Userform aufrufen.
(Userform ist in der Mustermappe nicht eingefügt, hab dafür eine MsgBox genommen,
damit der Button wenigsten was macht)

Könnte man die Namen der Commandbutton in ein Array schreiben
und im Tabellenblatt mit Call oder so... aufrufen?
Der Vorteil wäre weniger Text und falls es mal mehr
Commandbuttons werden, könnte man es einfach erweitern.
Im Projekt werden die Tabellennamen über den Codenamen der jeweiligen Tabelle angesprochen, spart auch Text ;)
VG, Jens
Mustermappe:

Die Datei https://www.herber.de/bbs/user/110956.xlsm wurde aus Datenschutzgründen gelöscht

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe zu VBA Code vereinfachen gesucht
27.01.2017 21:32:44
Matthias
Hallo Jens
hier eine Vereinfachung
Sub einfacher()
CmdMontag.Enabled = False      'alle deaktivueren
CmdDienstag.Enabled = False
CmdMittwoch.Enabled = False
CmdDonnerstag.Enabled = False
CmdFreitag.Enabled = False
CmdSamstag.Enabled = False
CmdSonntag.Enabled = False
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
'   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  _
'   +    I n f o r m a t i o n !                                                                 _
'   +    -----------------------                                                                 _
'   +    Beim öffnen des Tabellenblattes werden die Buttons "Montag - Sonntag" deaktiviert       _
'   +    Aktivierung erfolgt nach Eingabe vom Datum,                                             _
'   +    der Abgleich erfolgt dann mit dem Wochentag                                             _
'   +                                                                                            _
'   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  _
einfacher
Select Case Range("F8").Value
Case "Montag"
CmdMontag.Enabled = True
Case "Dienstag"
CmdDienstag.Enabled = True
Case "Mittwoch"
CmdMittwoch.Enabled = True
Case "Donnerstag"
CmdDonnerstag.Enabled = True
Case "Freitag"
CmdFreitag.Enabled = True
Case "Samstag"
CmdSamstag.Enabled = True
Case "Sonntag"
CmdSonntag.Enabled = True
End Select
Gruß Matthias
Anzeige
AW: Hilfe zu VBA Code vereinfachen gesucht
28.01.2017 21:11:16
Jens
Hallo ihr beiden,
vielen Dank für eure schnelle und hilfreiche Antwort.
Leider noch nicht ganz am Ziel angelangt.
Mir gefällt am besten Luschi's Variante
Sub nurEinCommandbuttonsEnabled()
Dim objKnopf As OLEObject
With Register01
For Each objKnopf In .OLEObjects
If TypeName(objKnopf.Object) = "CommandButton" Then
If objKnopf.Name = "Cmd" & .Range("F8").Value Then
objKnopf.Enabled = True
Else
objKnopf.Enabled = False
End If
End If
Next
End With
Set objKnopf = Nothing
End Sub
Jetzt kommt der Haken! Auf meinem Tabellenblatt befinden sich ja noch andere Commandbuttons.
Die haben mit den 7 "Wochentagen" nichts zu tun. Sind aber mal ganz gemütlich abgeschaltet :-)
Wie müsste denn der Code aussehen dass er nur die besagten 7 Wochentage anspricht?
Danke + Grüße,
Jens
Anzeige
AW: Hilfe zu VBA Code vereinfachen gesucht
29.01.2017 05:26:04
Matthias
Hallo
Wie müsste denn der Code aussehen dass er nur die besagten 7 Wochentage anspricht?
Bei meiner Variante gibts da keine Probleme. Ich spreche nur die 7 Button an.
Aber auch in Luschi's Variante lässt sich das einpflegen :-)
Gruß Matthias
AW: Einfacher oder zu einfach?
29.01.2017 11:13:20
Gerd
Hallo Jens!
Sub nurEinCommandbuttonsEnabled()
Dim objKnopf As OLEObject
Dim vntWochentage As Variant
vntWochentage = Array("Montag", "Dienstag", "Mittwoch", _
"Donnerstag", "Freitag", "Samstag", "Sonntag")
With Register01
For Each objKnopf In .OLEObjects
If TypeName(objKnopf.Object) = "CommandButton" Then
If objKnopf.Name = "Cmd" & .Range("F8").Value Then
objKnopf.Enabled = True
ElseIf IsNumeric(Application.Match(Mid(objKnopf.Name, 4), vntWochentage, 0)) Then
objKnopf.Enabled = False
End If
End If
Next
End With
Set objKnopf = Nothing
End Sub

Gruß Gerd
Anzeige
AW: Einfacher oder zu einfach?
30.01.2017 00:26:55
Jens
Hallo Ihr lieben Helferlein,
vielen, vielen Dank für die tollen Lösungen.
Hab mich für die Variante mit dem Array entschieden. Das gefällt mir am besten.
Zusätzlich noch den Spinn Button fürs Datum mit eingefügt.
Diese Möglichkeit hatte ich ja nun bisher gar nicht in Betracht gezogen.
Passt super zum Projekt und ist eine prima Lösung für Schreibfaule :-)
Werde es diese Woche ausgiebig testen und mich drüber freuen wenn es ohne Störungen funktioniert.
Ich hab noch einen anderen Code der ebenfalls gekürzt werden sollte.
Bin mir aber nicht sicher ob ich dafür lieber einen neuen Fred aufmachen soll oder den hier mit poste?
VG, Jens
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige