5k Aufrufe
Gefragt in Tabellenkalkulation von michael10 Mitglied (109 Punkte)
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

10 Antworten

0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von michael10 Mitglied (109 Punkte)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von michael10 Mitglied (109 Punkte)
Hallo Oliver,

vielen Dank, genau das was ich gebraucht habe, funzt supper.

Gruß Michael
0 Punkte
Beantwortet von michael10 Mitglied (109 Punkte)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von michael10 Mitglied (109 Punkte)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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_einschaltenbzw.

Call Funktion_Ausschneiden_ausschaltendieses 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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von michael10 Mitglied (109 Punkte)
Hallo Oliver,

ich hatte die Codes nicht in ein Modul eingefügt.
Jetzt funzt alles bestens.
Vielen Dank noch mal !

Gruß Michael
...