AW: Autokorrektur oder VBA
07.07.2007 08:16:48
ingUR
Hallo, @Holgi,
eine etwas ungewöhnliche Aufgabe, zumal Du nicht erkennen läßt, ob tatsächlich für alle Zahleneingaben in beliebigen Zellen eines Tabellenblattes der Wert durch die Relation des Eingabewertes zu dem Basiswert 38,5 ersetzt werden sollen.
Hier einmal die Prozeduren, die jede Zahleneingabe des Tabellenblattes diese Aufgabe automatisch durchführt
Option Explicit
Dim NoTransform As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If NoTransform Then Exit Sub
If IsNumeric(Target) Then
NoTransform = True
Target = Target.Value / 38.5
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
NoTransform = False
End Sub
Hier wird natürlich der Wert einer jeden Zelle der Tabelle, in deren VBA-Projektordner Du diese Prozeduren einfügst, die mit der Bestätigungstaste verlassen wird, durch den Basiswert dividiert, sofern nicht ein führendes Gleichheitszeichen die Auswertung einer Formel erzwingt und so dass Formelergebnis ohne Bezugnahme schreibt.
Wenn dieses so nicht gewünscht wird, bleibt der von Matthias vorgeschlagenen Weg der manuellen Aktivierung der Prozedur, wobei Du natürlich allgemeine ersetzen kannst:
Sub Wandeln()
'bezieht sich auf die aktive Zelle
If isNumeric(ActiveCell) Or Len(Target.Formula) > 0 Then ActiveCell = ActiveCell/38.5
End Sub
Aber auch die Aktivierung über eine speziele Tastenkombination für das Makro wäre denkbar, die als Tastenkürzel des Makros hinterlegt wird (Extras::Marko...::Makroname:Wndeln::Optionen...) oder aber via VBA überwacht wird.
Gruß,
Uwe