Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Automatisierungsfehler bei Kopieren deaktivieren

Automatisierungsfehler bei Kopieren deaktivieren
19.05.2004 14:24:29
Reinhard
Hallo Wissende,
aus dem Archiv ( https://www.herber.de/forum/archiv/172to176/t173544.htm ) habe ich den nachfolgenden Code. Es kommt in der
Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
wenn sie von der
Sub procKopierenAusschneidenAus()
mit
procControlEnableDisable 19, False 'Kopieren
aufgerufen wird,
an der in der Sub hervorgehobenen Stelle die Fehlermeldung: Laufzeitfehler -2147467259 (80004005) Die Methode Enabled für das Object _CommandBarButton ist fehlgeschlagen. Hilfe führt dann zu Automatisierungsfehler 440.

Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
Dim cmbSuche As CommandBar
Dim cmbcSteuerelement As CommandBarControl
For Each cmbSuche In Application.CommandBars
Set cmbcSteuerelement = _
cmbSuche.FindControl(ID:=intId, recursive:=True)
If Not cmbcSteuerelement Is Nothing Then
cmbcSteuerelement.Enabled = bolStatus
End If
Next
End Sub
Wer kann mir da helfen? Nachfolgend der komplette Code.
Übrigens fiel mir auf dass bei mir im Kontext der rechten Maustaste "Zellen löschen" deaktiviert ist, wie schalte ich das wieder ein?
Dankeschön
Reinhard
In "DieseArbeitsmappe" steht:
Option Explicit

Private Sub Workbook_Open()
procKopierenAusschneidenAus
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
procKopierenAusschneidenEin
End Sub

Sub testaus()
procKopierenAusschneidenAus
End Sub
Sub testein()
procKopierenAusschneidenEin
End Sub
Im "Modul1" steht:
Option Explicit
'Ihnen stehen damit die Prozeduren
'"procKopierenAusschneidenAus" sowie
'"procKopierenAusschneidenEin" zum Deaktivieren bzw.
'Einschalten der Kopier-Funktionen zur Verfuegung, die Sie
'nun noch ueber entsprechende Ereignisprozeduren automatisch
'aufrufen muessen. In der Regel bietet es sich an, die
'Schutzfunktion einzuschalten, wenn die Arbeitsmappe
'geoeffnet wird und den alten Zustand beim Schliessen der
'Datei wiederherzustellen. Verwenden Sie dazu die folgenden
'Prozeduren im Modul "Diese Arbeitsmappe":
Sub procKopierenAusschneidenAus()
'Tastenkombinationen deaktivieren
Application.OnKey "^x", ""
Application.OnKey "^c", ""
Application.OnKey "^v", ""
Application.OnKey "+{DEL}", ""
Application.OnKey "+{INSERT}", ""
'Drag & Drop ausschalten
Application.CellDragAndDrop = False
' Schaltflaechen deaktivieren
procControlEnableDisable 21, False ' Ausschneiden
procControlEnableDisable 19, False 'Kopieren
procControlEnableDisable 22, False 'Einfuegen
procControlEnableDisable 755, False 'Inhalte einfuegen
End Sub
Sub procKopierenAusschneidenEin()
'Tastenkombinationen einschalten
Application.OnKey "^x"
Application.OnKey "^c"
Application.OnKey "^v"
Application.OnKey "+{DEL}"
Application.OnKey "+{INSERT}"
'Drag & Drop wieder erlauben
Application.CellDragAndDrop = True
' Schaltflaechen aktivieren
procControlEnableDisable 21, True ' Ausschneiden
procControlEnableDisable 19, True 'Kopieren
procControlEnableDisable 22, True 'Einfuegen
procControlEnableDisable 755, True 'Inhalte einfuegen
End Sub

Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
Dim cmbSuche As CommandBar
Dim cmbcSteuerelement As CommandBarControl
For Each cmbSuche In Application.CommandBars
Set cmbcSteuerelement = _
cmbSuche.FindControl(ID:=intId, recursive:=True)
If Not cmbcSteuerelement Is Nothing Then
cmbcSteuerelement.Enabled = bolStatus
End If
Next
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisierungsfehler bei Kopieren deaktivieren
19.05.2004 15:42:24
FrankTheFox
Hallo,
(1) Du verwendest eine Index z.B.:21,19,22,755. Wenn Dieser Index auf einen
nicht vorhanden Button verweist gibts ein Problem.
(2) Sicher das Control C auch deaktiviert ist?
Gruss Franky
AW: Automatisierungsfehler bei Kopieren deaktivier
Reinhard
Hallo Franky,
zu Strg-C, das und Strg-X wollte ich herausnehmen aus dem radikal abstellen und s mit den drei unteren Makros abfangen, logo den beiden sichtbaren Makros den Ausführungstastnkürzel Strg+c bzw Strg+x zuzuweisen.
Ja, Indexnummern sind immer kritisch, ich probier das mal Zug um Zug auf Namen anstatt Indices umzustellen, sowie Überprüfungen ob etwas existiert bevor es auf falsch gesetzt wird. Und dann einzelne Elemente vom Falsch setzen auszunehmen wenn es bei denen nicht geht. Um dann letztlich auf On error resume next zu verzichten. Kann aber bei meinem VBA-Level dauern:-)
Gruß
Reinhard

Anzeige
AW: Automatisierungsfehler bei Kopieren deaktivieren
kdosi
Hallo Reinhard
ich habe den Code ausprobiert und wie Du auch eine Fehlermeldung erhalten :-). Bei mir war es dadurch verursacht, dass cmbcSteuerelement im CommandBar "Clipboard" wollte sich nicht disablen lassen und es gab dabei ein Fehler :-). Also der Code habe ich mit On Error Resume Next ergaenzt und es funzt jetzt. Es enables oder disables die gewuenschten Steuerelemente, aber mit Ausnahmen, wie z.B. Copy Button im Clipboard :-). Also falls Du damit leben kannst, dann ist es ok :-).
Also wenn Du die genannten Funktionen ausschalten wills -> run

Sub testaus()
und fuer einschlaten -> run 

Sub testein()
Gruss kdosi aus der Tschechischen Rep.

Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
Dim cmbSuche As CommandBar
Dim cmbcSteuerelement As CommandBarControl
On Error Resume Next
For Each cmbSuche In Application.CommandBars
Set cmbcSteuerelement = cmbSuche.FindControl(ID:=intId, recursive:=True)
If Not cmbcSteuerelement Is Nothing Then
cmbcSteuerelement.Enabled = bolStatus
End If
Next
End Sub

Anzeige
Wie deaktiviert man denn den Copy-Button?
Reinhard
Hi Kdosi,
danke für den Hinweis mit dem Fehler beim Clipboard, werde mal schauen ob ich das vorher abfrage beim Falsch setzen, um herauszufinden dass es das Einzige ist was sich wehrt, um dann on Error weglassen zu können(siehe auch meine andere Antwort hier.)
Stimmt, an den habe ich gar nicht gedacxht, denn den habe ich gar nicht eingebaut:)
Wie deaktiviere /aktiviere ich denn den Copybutton in der Symbolleiste?
Dankeschön
Reinhard
AW: Wie deaktiviert man denn den Copy-Button?
19.05.2004 17:01:41
Nepumuk
Hi Kdosi,
den Button in der Symbolleiste Clipboard kannst du nicht deaktivieren. Wenn du aber das kopieren schon verhindern willst, dann disable doch diese Leiste. Das kannst du in das Makro integrieren:


Private Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
    Dim cmbcSteuerelement As CommandBarControl
    For Each cmbSuche In Application.CommandBars
        If cmbSuche.Name = "Clipboard" Then
            cmbSuche.Enabled = bolStatus
        Else
            Set cmbcSteuerelement = cmbSuche.FindControl(Id:=intId, recursive:=True)
            If Not cmbcSteuerelement Is Nothing Then cmbcSteuerelement.Enabled = bolStatus
        End If
    Next
End Sub


Gruß
Nepumuk
Anzeige
ui, danke dir -) o.w.T.
Reinhard
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige