Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1524to1528
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Großschreibung bei Zellwert Änderung

Großschreibung bei Zellwert Änderung
28.11.2016 22:44:39
Oisse
Hallo Zusammen,
ich möchte gerne folgendes erreichen:
Wenn ich in Spalte F ein Land eingebe außer Deutschland, z.B. Frankreich, dann soll dieser Ländername in Großbuchstaben erscheinen, ebenso in Spalte E der Ort.
Wenn ich diesen Code verwende, hängt sich Excel auf:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tc As Long
Dim tr As Long
Dim tt As String
tc = Target.Column
tr = Target.Row
If tc = 6 Then
tt = Range("F" & tr).Text
If tt  "D" And tt  "Deutschland" Then
Target.Offset(0, 0) = UCase(Target.Offset(0, 0).Value)
Target.Offset(0, -1) = UCase(Target.Offset(0, -1).Value)
End If
End If
End Sub

Wie bitte muss er richtig lauten?
Gruß Oisse

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Großschreibung bei Zellwert Änderung
29.11.2016 06:39:10
hary
Moin
Du musst das Event,wenn du per Code eine Zelle aenderst, aus und wieder einschalten. Sonst wird das Change Ereigniss immer wieder ausgefuehrt.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tt As String
If Target.Count > 1 Then Exit Sub '--Nur bei Aenderung einer Zelle Code ausfuehren
If Target.Column = 6 Then
tt = Target.Text '--reicht Target
If tt  "D" And tt  "Deutschland" Then
Application.EnableEvents = False '--Event ausschalten
Target = UCase(Target) '--reicht Target
Target.Offset(0, -1) = UCase(Target.Offset(0, -1))
End If
End If
Application.EnableEvents = True '--Event einschalten
End Sub

gruss hary
Anzeige
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

Anzeige
Dankeschön
29.11.2016 08:45:42
Oisse
Hallo Case und Hary,
habt viiiielen Dank für eure Unterstützung und hilfreichen Erklärungen.
Ich wünsche Euch noch einen schönen und erfolgreichen Tag.
Herzliche Grüße
Oisse
Gerne! Danke für die Rückmeldung, owT
29.11.2016 08:57:55
Case
:-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige