Du benötigst hier...
29.11.2016 06:42:39
Case
Hallo Oisse, :-)
... eigentlich keine Variablendeklaration, denn Du hast alle Informationen, die Du benötigst in "Target", da Du ja mit einer Ereignisprozedur arbeitest. ;-)
Immer, wenn Du in einer Ereignisprozedur Änderungen im Tabellenblatt vornimmst, musst Du die Events abschalten, da sich die Routine sonst immer wieder selbst aufruft. ;-)
Also etwa so: ;-)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Columns(6)) Is Nothing Then
If UCase(Target.Value) "D" And Target.Value "Deutschland" Then
Target.Value = UCase(Target.Value)
Target.Offset(0, -1).Value = UCase(Target.Offset(0, -1).Value)
End If
End If
Application.EnableEvents = True
End Sub
Die anderen Ereignisse könntest Du aber temporär auch noch ausschalten. Hier bietet es sich an mit einer Errorroutine zu arbeiten, da bei einem Abbruch des Makros die Events nicht eingeschaltet werden (ausser ScreenUpdating).
So der Spur nach: ;-)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngCalc As Long
On Error GoTo Fin
If Not Intersect(Target, Columns(6)) Is Nothing Then
With Application
.ScreenUpdating = False
.EnableEvents = False
lngCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
If UCase(Target.Value) "D" And Target.Value "Deutschland" Then
Target.Value = UCase(Target.Value)
Target.Offset(0, -1).Value = UCase(Target.Offset(0, -1).Value)
End If
End If
Fin:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = lngCalc
.DisplayAlerts = True
End With
If Err.Number 0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
End Sub
Servus
Case