Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1636to1640
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

Modulaufruf (Zellen einfügen / löschen) fehlerhaft

Modulaufruf (Zellen einfügen / löschen) fehlerhaft
13.08.2018 15:31:32
Luggas
Hallo zusammen,
ich hätte schon wieder die nächste Frage an die Profis hier unter uns.
Ich habe folgende Module definiert:
Modul2:
Sub NoInsert()
Dim I As Integer
Dim cbStr As String
Dim cbCtrl As CommandBarControl
Application.ScreenUpdating = False
For I = 1 To 2
If I = 1 Then
cbStr = "row"
Else
cbStr = "column"
End If
For Each cbCtrl In Application.CommandBars(cbStr).Controls
If cbCtrl.ID = 3183 Then
cbCtrl.Enabled = False
End If
Next
Next
Application.ScreenUpdating = True
End Sub

Modul3:
Sub NoInsertReverse()
Dim I As Integer
Dim cbStr As String
Dim cbCtrl As CommandBarControl
Application.ScreenUpdating = True
For I = 1 To 2
If I = 1 Then
cbStr = "row"
Else
cbStr = "column"
End If
For Each cbCtrl In Application.CommandBars(cbStr).Controls
If cbCtrl.ID = 3183 Then
cbCtrl.Enabled = True
End If
Next
Next
Application.ScreenUpdating = True
End Sub
Modul4:

Sub StopDeleteRowCols()
Dim xBarControl As CommandBarControl
For Each xBarControl In Application.CommandBars.FindControls(ID:=293)
xBarControl.Enabled = False
Next
For Each xBarControl In Application.CommandBars.FindControls(ID:=294)
xBarControl.Enabled = False
Next
End Sub
Modul5:
Sub StopDeleteRowColsReverse()
Dim xBarControl As CommandBarControl
For Each xBarControl In Application.CommandBars.FindControls(ID:=293)
xBarControl.Enabled = True
Next
For Each xBarControl In Application.CommandBars.FindControls(ID:=294)
xBarControl.Enabled = True
Next
End Sub

Ich rufe zwei der vier Module beim Öffnen der Excel Datei wie folgt auf (nicht wundern, es gibt auch ein Modul1, dieses Modul ist hierfür aber nicht von Bedeutung):
Private Sub Workbook_Open()
Call NoInsert
Call StopDeleteRowCols
End Sub

Eigentlich hat das auch schon funktioniert, nur komischerweise jetzt nach etwas vergangener Zeit (also ich rede hier von maximal einer Stunde) funktioniert nur noch, dass das Zellen löschen wie gewünscht unterbunden wird.
Wohingegen das Zellen einfügen komischerweise erlaubt ist.
Wenn ich jedoch

Private Sub Workbook_Open()
manuell ausführe (F5) wird es wie gewünscht gesperrt.
Kann mir jemand vielleicht sagen woran das liegen könnte bzw. hat mir evtl. jemand einen Tipp, wie ich das besser gestalten kann, dass ein derartig komischer Fehler nicht mehr auftritt?
PS: Ich habe zwischendurch glaub mal das Modul3 (damit wird das Einfügen wieder erlaubt) ausgeführt (F5), jedoch sollte das ja beim nächsten Öffnen der Datei wieder mit Modul2 überschrieben werden oder verhaspelt sich Excel da ggfs.?
Wie immer vielen Dank.

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

Betreff
Datum
Anwender
Anzeige
An der Oberfläche rumschrauben, ist schlecht...
14.08.2018 08:13:42
EtoPHG
Hallo Luggas,
Programmatisch an den Standard-Befehlsschaltflächen der XL-Menübars rumzuschrauben, ist immer schlecht. Schliesslich gibt es Automatismen in XL die z.B. auch deine beiden Schaltflächen ein- und ausschalten (Selektier z.B. nur mal ein Diagramm). Die übersteuern selbstredend deine vermeintlich erwarteten Zustände.
Noch was zum Codeverständnis, ob diese Prozeduren (Subroutinen) in einem oder x Modulen verteilt sind, spielt absolut keine Rolle. Und das ein Modul ein anderes 'überschreibt' ist ein völlig abwegiger, bzw. falscher, Gedanke!
Nochmal: Bei deinem VBA Level (und auch höheren): Lasst die Finger von der Manipulation der XL-Standard Menü-Funktionen, Excel weiss schon was es tut, Programmierer eher nicht!
Gruess Hansueli
Anzeige
AW: An der Oberfläche rumschrauben, ist schlecht...
14.08.2018 11:26:35
Luggas
Hi Hansueli,
ja da hast du vermutlich recht.
Ich werde versuchen das ganze nun doch über die eingebaute Microsoft-Lösung umzusetzen (Blatt schützen).
Grüße.
Gute Einstellung, weiter so...
14.08.2018 11:36:57
EtoPHG
Hallo Luggas,
Ich finde es immer gut, soweit wie möglich mit den Standardfunktionen auszukommen.
VBA kann als (letzter) Notnagel immer noch einspringen, aber dann sollte man sich schon sehr gut in den ersteren auskennen und damit genau wissen, was man tut. Also weiter so...
Gruess Hansueli
...du hast vermutlich recht.
Nach dem alten Spruch:
§1 Ich hab immer recht.
§2 Sollte das mal nicht der Fall sein, tritt automatisch §1 in Kraft
;-)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige