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
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?
Aber wenn dein Makro den Rechner lahmlegt
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.
Eine ordentliche Software übernimmt nicht ohne Not die Kontrolle über den Rechner
Excel != Rechner. Und vielleicht gibt es eine Not, die wir nicht kennen.
Eine ordentliche Software […] fängt unerwünschte Nutzereingriffe anders ab
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.
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.
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
und auch alle Makros selbst programmiert
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.
sondern nur angemerkt, dass eine Verhinderung von Nutzereingriffen, ein Fehlen einer Möglichkeit zum Abbruch, typisches Merkmal von Schadsoftware ist.
Soso. Na wir schauen mal…
Dann ist es ja eine Schadsoftware, wenn ich als Nutzer die Programmausführung nicht mehr beenden kann.
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.
dass man hier als Fragesteller es auch hinnehmen muss, dass Antworten über den vorgegebenen Antwortkorridor hinausgehen
Und da gehören unhaltbare Unterstellungen dazu? Alles was du sagst ist off-Topic. Aber wie hast du das vorhin so eloquent dargestellt?
Gemach, gemach! Hier im Forum beachten wir eigentlich die Netiquette.
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.
unhaltbare Unterstellungen
Ich habe dem Fragesteller einen Hinweis gegeben, Das hat er auch ohne Probleme angenommen:
Danke fürs Mitdenken und Gruß
Nur du bist irgendwie auf Krawall gebürstet.
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
Hier das Script eines dieser Makros
Sorry, kannst du das nochmal mit dem Code-Tag einfügen? Sonst ist das nicht lesbar, weil der Editor die Sonderzeichen schluckt.
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
kannst du das nochmal mit dem Code-Tag einfügen
ganz ernsthaft. Ohne einen lesbaren Quelltext kann man dir nicht helfen. Und das was du geschickt hast ist meilenweit von dem hier entfernt:
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.
Also folgende Aufgaben für dich: