Excel 2010 - ESC-Taste (de)aktivieren

Hallo ihr verehrten Wissenden,
ich suche einen VB-Befehl, der innerhalb eines Makros die ESC-Taste zunächst deaktiviert und am Ende des Makros wieder aktiviert.

Geht das? Für Rat und Hilfe wäre dankbar
weidag

Ups - vergessen: Es geht um Windows 10 (neuestes Update)

füge das in den Code ein…

Application.EnableCancelKey = xlDisabled

Gruß
Fronk

…und dann halt enabled am Ende…

Application.EnableCancelKey = xlDisabled

Hallo, danke für deine Mühe,

aber leider hat es nicht geklappt.
Ich konnte ein laufedes Makro dennoch problemlos unterbrechen, was ja genau hätte verhindert werden sollen.

Gruß weidag

Dann ist es ja eine Schadsoftware, wenn ich als Nutzer die Programmausführung nicht mehr beenden kann.

Bullshit! Es gibt durchaus Situationen, in denen eine Unterbrechung einer laufenden Operation Schäden bezüglich Datenintegrität auslösen. In manchen Situationen ist es besser, wenn man den Mitarbeiter vor sich selbst schützt.

Hmpf. Zeig doch mal ein Stückchen Quelltext. Aber kein VBA-Konvolut über 3 A4-Seiten, sondern nur soviel wie nötig, um das Problem zu reproduzieren.

Gemach, gemach! Hier im Forum beachten wir eigentlich die Netiquette.

Aber wenn dein Makro den Rechner lahmlegt, dann findet der Mitarbeiter auch andere Mittel und Wege, Systemsteuerung, Rechner ausschalten, etc. Endanwender können da ganz schön findig sein, auch wenn sie ansonsten als Laien auftreten.

Eine ordentliche Software übernimmt nicht ohne Not die Kontrolle über den Rechner, sondern fängt unerwünschte Nutzereingriffe anders ab.

Wer hat denn angefangen mit den Unterstellungen?

Davon war doch aber gar nicht die Rede. Es war die Rede davon, dass der Nutzer ein Makro in Excel nicht unterbrechen soll. Das kann unendlich viele andere Gründe haben als Schaderoutinen. Und es bedeutet auch nicht, dass der Rechner lahmgelegt ist. Es könnte auch eine Sanduhr drehen, während ein großer Datensatz ausgewertet wird. Wir wissen es nicht.

Excel != Rechner. Und vielleicht gibt es eine Not, die wir nicht kennen.

Oder es ist irgendein schnell hingehacktes Einmaltool, wo es nicht um schön, sondern um schnell geht, wofür der Auftraggeber einfach nicht für nice to have bezahlt. Das alles wissen wir nicht. Also maßen wir uns mal nicht an, die Glaskugel gelesen zu haben.

Ich habe ja nicht die Glaskugel gelesen, sondern nur angemerkt, dass eine Verhinderung von Nutzereingriffen, ein Fehlen einer Möglichkeit zum Abbruch, typisches Merkmal von Schadsoftware ist.

Wenn du gleich an die Decke gehst (warum eigentlich?) und unflätig rumpöbelst (Bullshit!), dann hast du wohl noch nicht mitgeschnitten, dass man hier als Fragesteller es auch hinnehmen muss, dass Antworten über den vorgegebenen Antwortkorridor hinausgehen. Wenn man das nicht will, sollte man sich an kostenpflichtige Beratungsportale wenden, da kann man als Fragesteller besser die Regeln diktieren.

1 Like

Schadsoftware? Nein, in diesem Fall gewiss nicht. Ich habe die komplexe Excelmappe selbst erstellt und auch alle Makros selbst programmiert. Garantiert schadsoft-frei. Ich will nur nicht, dass die künftigen Anwender die Makros stoppen und dadurch Schaden an den Daten anrichten könnten.
Danke fürs Mitdenken und Gruß
weidag

Nein, es ist kein schnell gebasteltes Einmal-Tool. Ich bin schon viele hundert Stunden darüber gesessen, übrigens ehrenamtlich für einen Förderverein. Nochmals zur Klarstellung: Makros (von mir selbst programmiert) leisten nützliche Dienste - was sonst. Die Excelmappe ist nach allen Seiten gegen jede erdenkliche Art von Fehleingaben, Löschversuchen von Formeln (nicht aus böser Absicht!!) geschützt. Nur wenn eines der Makros aufgerufen wird, könnte man dessen Ablauf mit der ECS-Taste stoppen. Was tut ein unerfahrener Anwender dann? Alles auch noch speichern???

Also nochmals: es ist völlig harmloses VB, und ich will nur diejenigen Tasten während des Makroablaufs sperren, mit denen das Makro unterbrochen werden kann. ESC und …

Danke für euer Verständnis

weidag

dann zeig doch mal ein Makro, bei dem du die Unterbrechung durch ESC verhindern willst und dann können wir dir vielleicht sagen, warum es nicht geht.

Soso. Na wir schauen mal…

Wo ist jetzt dieses „typische Merkmal“? Kann es nicht finden. Deine Aussage war absolut. ESC verbieten, dann ist es Schadsoftware. Das ist eine unsachliche Unterstellung.

Und da gehören unhaltbare Unterstellungen dazu? Alles was du sagst ist off-Topic. Aber wie hast du das vorhin so eloquent dargestellt?

Und was steht wohl in der Netiquette über off-Topic-Diskussionen und Unterstellungen jeglicher Art? Aber ist schon klar… Netiquette gilt nur für die Anderen.

Ich habe dem Fragesteller einen Hinweis gegeben, Das hat er auch ohne Probleme angenommen:

Nur du bist irgendwie auf Krawall gebürstet.

2 Like

Hier das Script eines dieser Makros

Sub HSL_Abrech_leeren()

’ HSL_Abrech_leeren Makro

Sheets(„HSL-Abrechnung“).Select

'Range(„B16“).Select

Range("H6:H14").Select
Selection.ClearContents
Selection.Copy
Range("J6").Select
ActiveSheet.Paste
Range("L6").Select
ActiveSheet.Paste
Range("N6").Select
ActiveSheet.Paste
Range("P6").Select
ActiveSheet.Paste
Range("R6").Select
ActiveSheet.Paste
Range("T6").Select
ActiveSheet.Paste
Range("V6").Select
ActiveSheet.Paste
Range("X6").Select
ActiveSheet.Paste
Range("Z6").Select
ActiveSheet.Paste
Range("AB6").Select
ActiveSheet.Paste
Range("AD6").Select
ActiveSheet.Paste
Range("H20").Select
ActiveSheet.Paste
Range("J20").Select
ActiveSheet.Paste
Range("L20").Select
ActiveSheet.Paste
Range("N20").Select
ActiveSheet.Paste
Range("P20").Select
ActiveSheet.Paste
Range("R20").Select
ActiveSheet.Paste
Range("T20").Select
ActiveSheet.Paste
Range("V20").Select
ActiveSheet.Paste
Range("X20").Select
ActiveSheet.Paste
Range("Z20").Select
ActiveSheet.Paste
Range("AB20").Select
ActiveSheet.Paste
Range("AD20").Select
ActiveSheet.Paste
Range("H34").Select
ActiveSheet.Paste
Range("J34").Select
ActiveSheet.Paste
Range("L34").Select
ActiveSheet.Paste
Range("N34").Select
ActiveSheet.Paste
Range("P34").Select
ActiveSheet.Paste
Range("R34").Select
ActiveSheet.Paste
Range("T34").Select
ActiveSheet.Paste
Range("V34").Select
ActiveSheet.Paste
Range("X34").Select
ActiveSheet.Paste
Range("Z34").Select
ActiveSheet.Paste
Range("AB34").Select
ActiveSheet.Paste
Range("AD34").Select
ActiveSheet.Paste
Range("H49").Select
ActiveSheet.Paste
Range("J49").Select
ActiveSheet.Paste
Range("L49").Select
ActiveSheet.Paste
Range("N49").Select
ActiveSheet.Paste
Range("P49").Select
ActiveSheet.Paste
Range("R49").Select
ActiveSheet.Paste
Range("T49").Select
ActiveSheet.Paste
Range("V49").Select
ActiveSheet.Paste
Range("X49").Select
ActiveSheet.Paste
Range("Z49").Select
ActiveSheet.Paste
Range("AB49").Select
ActiveSheet.Paste
Range("AD49").Select
ActiveSheet.Paste
Range("H63").Select
ActiveSheet.Paste
Range("J63").Select
ActiveSheet.Paste
Range("L63").Select
ActiveSheet.Paste
Range("N63").Select
ActiveSheet.Paste
Range("P63").Select
ActiveSheet.Paste
Range("R63").Select
ActiveSheet.Paste
Range("T63").Select
ActiveSheet.Paste
Range("V63").Select
ActiveSheet.Paste
Range("X63").Select
ActiveSheet.Paste
Range("Z63").Select
ActiveSheet.Paste
Range("AB63").Select
ActiveSheet.Paste
Range("AD63").Select
ActiveSheet.Paste
Range("H77").Select
ActiveSheet.Paste
Range("J77").Select
ActiveSheet.Paste
Range("L77").Select
ActiveSheet.Paste
Range("N77").Select
ActiveSheet.Paste
Range("P77").Select
ActiveSheet.Paste
Range("R77").Select
ActiveSheet.Paste
Range("T77").Select
ActiveSheet.Paste
Range("V77").Select
ActiveSheet.Paste
Range("X77").Select
ActiveSheet.Paste
Range("Z77").Select
ActiveSheet.Paste
Range("AB77").Select
ActiveSheet.Paste
Range("AD77").Select
ActiveSheet.Paste
Range("H6").Select


End Sub

Gruß und erneuten Dank
weidag

Sorry, kannst du das nochmal mit dem Code-Tag einfügen? Sonst ist das nicht lesbar, weil der Editor die Sonderzeichen schluckt.

grafik

Und dann wäre es natürlich noch super, wenn du zeigst, wo du den Versuch unternommen hast, die Taste zu sperren. Nur so kann man vielleicht erkennen, warum es nicht geht.

Sub PrüfBlatt_leeren()


’ PrüfBlatt_leeren Makro

’ Tastenkombination: Strg+Umschalt+U

'HIER SOLLTE die ESC-Taste deaktiviert werden (für dieses Makro)

Sheets(„Prüfblatt“).Select
ActiveSheet.Unprotect
Range(„I2:L2“).Select
Selection.ClearContents
Range(„I13:AM15“).Select
Selection.ClearContents
Range(„I24“).Select
ActiveWindow.SmallScroll Down:=6
Range(„I24:AM37“).Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=12
Range(„I52:AN52“).Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-33
Range(„I11“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Range(„I13:I15“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Range(„J11“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
Range(„J13:J15“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
Range(„I13:J15“).Select
Selection.Copy
Range(„K13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„M13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„O13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„Q13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„S13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„U13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„W13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„Y13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AA13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AC13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AE13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AG13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AI13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AK13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range(„AK13:AK15“).Select
Selection.Copy
Range(„AM13“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=3
Range(„I22“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Range(„I24:I37“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Range(„J22“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
Range(„J24:J37“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
Range(„I24:J37“).Select
Selection.Copy
Range(„K24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„M24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„O24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„Q24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„S24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„U24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„W24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„Y24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AA24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AC24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AE24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AG24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AI24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„AK24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range(„AK24:AK37“).Select
Selection.Copy
Range(„AM24“).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range(„I2:L2“).Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

ganz ernsthaft. Ohne einen lesbaren Quelltext kann man dir nicht helfen. Und das was du geschickt hast ist meilenweit von dem hier entfernt:

Also folgende Aufgaben für dich:

  1. Mach ein Minimalbeispiel, was dein Problem illustriert. Nur dein Problem und sonst nichts.
  2. stelle diesen Quelltext dann hier ein. Benutze dafür diesen Code-Tag FÜR DEN GANZEN QUELLTEXT!