Auscheiden per Makro unterbinden
Hallo Gemeinde,
nach langer Zeit benötige ich mal wieder eure Hilfe.
Ich brauch ein Makro das in einer gesamten Arbeitsmappe die Funktion "Ausschneiden" unterbindet.
Die Funktion "Kopieren" sollte aber erhalten bleiben.
Wenn das möglich sein sollte bin dankbar für Lösungen.
Gruß Michael
Antwort schreiben
Antwort 1 von malSchauen vom 27.08.2022, 14:33 Options
Hi,
Mal aus dem Bauch heraus und somit nicht sehr ausführlich getestet:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Application.CutCopyMode = xlCut Then Application.CutCopyMode = False
End Sub
Code gehört ins Project "Diese Arbeitsmappe".
bye
malSchauen
Antwort 2 von coros vom 27.08.2022, 18:49 Options
Hallo Michael,
nachfolgend noch eine andere Lösungsmöglichkeit.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Sub Funktion_Ausschneiden_ausschalten()
With Application
'In Menue "Bearbeiten" die Funktion "Ausschneiden" deaktivieren
.CommandBars("Worksheet Menu Bar").Controls("Bearbeiten").Controls("Ausschneiden").Enabled = False
'In Symbolleiste "Standard" die Funktion "Ausschneiden" deaktivieren
.CommandBars("Standard").FindControl(ID:=21).Enabled = False
'In Kontextmenü der rechten Maustaste die Funktion "Ausschneiden" deaktivieren
.CommandBars("Cell").Controls("Ausschneiden").Enabled = False
'Tasetenkombination "STRG + X" deaktivieren
.OnKey "^x", ""
'Menüleistenfunktion "Anpassen" ab Excel 2002 deaktivieren
If Val(Application.Version) > 9 Then .CommandBars.DisableCustomize = True
End With
End Sub
Sub Funktion_Ausschneiden_einschalten()
With Application
'In Menue "Bearbeiten" die Funktion "Ausschneiden" deaktivieren
.CommandBars("Worksheet Menu Bar").Controls("Bearbeiten").Controls("Ausschneiden").Enabled = True
'In Symbolleiste "Standard" die Funktion "Ausschneiden" deaktivieren
.CommandBars("Standard").FindControl(ID:=21).Enabled = True
'In Kontextmenü der rechten Maustaste die Funktion "Ausschneiden" deaktivieren
.CommandBars("Cell").Controls("Ausschneiden").Enabled = True
'Tasetenkombination "STRG + X" deaktivieren
.OnKey "^x"
'Menüleistenfunktion "Anpassen" ab Excel 2002 deaktivieren
If Val(Application.Version) > 9 Then .CommandBars.DisableCustomize = False
End With
End Sub
Was genau deaktiviert wird, steht in den auskommentierten Texten in den Makros.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von Michael10 vom 29.08.2022, 12:38 Options
Hallo ihr beiden und erst mal vielen Dank für eure Mühe.
@malSchauen, ich habe dein Makro getestet bei läuft leider es nicht.
@oliver,erst ist schön dich nach so langer Zeit, hier noch als helfende Hand wieder zu finden.
Ich habe deine Codes auch getestet sie funktionieren natürlich !
Es ist aber noch nicht ganz das was ich bräuchte.
Das Auschalten des Ausschneidens sollte automatisch beim öffnen der Datei ausgeführt werden und beim schließen der Datei wieder eingeschaltet werden, da ich festgestellt habe das sich das Ausschalten auf alle geöffneten Arbeitsmappen auswirkt oder kann man das auf die eine Datei beschränken ?
Ich weiß ich habe mal wieder Sonderwünsche, aber vielleicht fällt dir was ein dazu.
Gruß Michael
Antwort 4 von coros vom 29.08.2022, 13:56 Options
Hallo Michael,
freut mich, dass ich ins Schwarze getroffen habe. ;-)
Kopiere nachfolgenden Code in das VBA-Projekt "DieseArbeitsmappe" in der Datei, in der Du den Code aus AW2 in ein Modul eingefügt hast.
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Funktion_Ausschneiden_einschalten
End Sub
Private Sub Workbook_Open()
Call Funktion_Ausschneiden_ausschalten
End Sub
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 1 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von Michael10 vom 30.08.2022, 11:34 Options
Hallo Oliver,
vielen Dank, genau das was ich gebraucht habe, funzt supper.
Gruß Michael
Antwort 6 von Michael10 vom 31.08.2022, 12:32 Options
Hallo noch mal,
ich habe doch noch ein kleines Problem in meiner Orginal Datei befindet sich schon ein Code im VBA-Projekt "DieseArbeitsmappe" und zwar dieser:
Private Sub Workbook_Open()
If Sheets("Tabelle2").Range("B2").Value = 0 Then
UserForm1.Show '...öffne das UserForm Fenster
Else
Exit Sub
End If
End Sub
Option Explicit
Nun habe ich den Code von Oliver :
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Funktion_Ausschneiden_einschalten
End Sub
Private Sub Workbook_Open()
Call Funktion_Ausschneiden_ausschalten
End Sub
da auch eingefügt , aber beiden Codes arbeiten nicht zusammen.
Wie bekomme ich das hin das beide Makros laufen ?
Gruß Michael
Antwort 7 von coros vom 31.08.2022, 12:39 Options
Hallo Michael,
Du darfst in Deinem Fall nur
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Funktion_Ausschneiden_einschalten
End Sub
in das VBA-Projekt "
DieseArbeitsmappe" kopieren. Den Code aus "
Private Sub Workbook_Open()" musst Du in Deinen vorhandenen Code kopieren. Dieser sieht dann so aus:
Private Sub Workbook_Open()
Call Funktion_Ausschneiden_ausschalten
If Sheets("Tabelle2").Range("B2").Value = 0 Then
UserForm1.Show '...öffne das UserForm Fenster
Else
Exit Sub
End If
End Sub
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von Michael10 vom 31.08.2022, 14:25 Options
Hallo Oliver,
erst mal vielen Dank für deine schnelle Antwort.
Ich habe den Code jetzt so in dem VBA-Projekt "DieseArbeitsmappe" stehen
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Funktion_Ausschneiden_einschalten
End Sub
Private Sub Workbook_Open()
Call Funktion_Ausschneiden_ausschalten
If Sheets("Tabelle2").Range("B2").Value = 0 Then 'Wenn in Tabelle2 in Zelle B2 eine 0 steht dann...
UserForm1.Show '...öffne das UserForm Fenster
Else 'sonst
Exit Sub 'beende die Anweisung
End If
End Sub
Beim schliesen der Datei kommt aber die Fehlermeldung:
"Fehler beim Kompilieren sup ober function nicht definiert"
und dieser Abschnitt wird in VBA makiert angezeigt.
Call Funktion_Ausschneiden_einschalten
Und beim öffnen der Datei wird auch ein Kompilier Fehler gemeldet und das Startfenster wird nicht mehr aufgerufen.
Ich hoffe du hast eine Idee.
Gruß Michael
Antwort 9 von coros vom 31.08.2022, 14:39 Options
Hallo Michael,
in der Datei hast Du aber in einem Modul schon die beiden Makros mit dem Namen "
Funktion_Ausschneiden_einschalten" und "
Funktion_Ausschneiden_ausschalten"? Wenn nicht, dann musst Du die beiden Makros aus AW2 in ein Modul kopieren.
Wenn Du die beiden Makros in ein Modul kopiert, diese aber eventuell umbenannt hast, dann musst Du das natürlich auch in "
DieseArbeitsmappe" in den Zeilen
Call Funktion_Ausschneiden_einschalten
bzw.
Call Funktion_Ausschneiden_ausschalten
dieses anpassen.
Wenn das alles nichts hilft, dann benötigt man Deine Datei um zu sehen, woran das liegt. Du müsstest diese Datei dann mal bei z.B.
http://www.file-upload.net/ hochladen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 10 von Michael10 vom 31.08.2022, 15:51 Options
Hallo Oliver,
ich hatte die Codes nicht in ein Modul eingefügt.
Jetzt funzt alles bestens.
Vielen Dank noch mal !
Gruß Michael