Anpassen von Datumswerten per Tastendruck (Microsoft Excel)
Robert merkt an, dass in einem Quicken-Datumsfeld, wenn er die Plus- oder Minus-Taste drückt, das Datum um einen Tag erhöht oder verringert wird. Er möchte dieselbe Art von Effekt in Excel erzeugen.
Dies ist ein schwierigeres Problem, als man annehmen könnte, insbesondere in Excel. Da beim Drücken einer bestimmten Taste (in diesem Fall der Plus- oder Minus-Taste) eine Aktion ausgeführt werden muss, würde man natürlich davon ausgehen, dass die OnKey-Methode verwendet werden könnte. Betrachten Sie die folgenden Beispiele:
Sub Start_OnKey() Application.OnKey "{+}", "Plus1" Application.OnKey "-", "Minus1" End Sub
Sub End_OnKey() Application.OnKey "{+}" Application.OnKey "-" End Sub
Sub Plus1() If IsDate(ActiveCell) And Not ActiveCell.HasFormula Then ActiveCell.Value = ActiveCell.Value + 1 End If End Sub
Sub Minus1() If IsDate(ActiveCell) And Not ActiveCell.HasFormula Then ActiveCell.Value = ActiveCell.Value - 1 End If End Sub
Gemäß der gesamten VBA-Dokumentation sollte das oben Genannte einwandfrei funktionieren, sobald Sie das Makro Start_OnKey ausführen. Jedes Mal, wenn eine Plus- oder Minus-Taste gedrückt wird, wird das entsprechende Verfahren ausgeführt, um entweder das Datum zu erhöhen oder das Datum zu verringern. Das Problem ist, dass es in einigen Excel-Versionen nicht funktioniert. Warum? Weil die Plus-Taste beim Drücken anscheinend einige Versionen von Excel in einen speziellen „Formeleingabemodus“ versetzt, der den normalen Tastaturpuffer umgeht, auf den sich OnKey stützt. Wenn Sie also die Minus-Taste drücken, während eine Zelle mit einem Datum ausgewählt ist, wird das gewünschte Ergebnis erzielt, während Sie die Plus-Taste nicht drücken.
Bei Versionen von Excel, bei denen die Plus-Taste ein Problem darstellt, besteht die einzige Lösung darin, die Tastenanschläge in etwas anderes zu ändern. Sie können beispielsweise die Tastendrücke so ändern, dass Strg + u zum Erhöhen des Datums und Strg + d zum Dekrementieren des Datums verwendet wird:
Sub Start_OnKey() Application.OnKey "^u", "Plus1" Application.OnKey "^d", "Minus1" End Sub
Sub End_OnKey() Application.OnKey "^u" Application.OnKey "^d" End Sub
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (7197) gilt für Microsoft Excel 97, 2000, 2002 und 2003.