Anzeige
Archiv - Navigation
1464to1468
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

VBA aus Kleinbuchstaben > Großbuchstaben machen

VBA aus Kleinbuchstaben > Großbuchstaben machen
06.01.2016 13:35:28
Erik
Hallo zusammen habe folgende Tabelle
https://www.herber.de/bbs/user/102611.xls
Wenn ich in Spalte C etwas eingebe soll automatisch von Klein auf Grossbuchstaben abgeändert werden.
Soweit funktioniert das auch.
Allerdings hört das Makro nicht mehr auf zu laufen, sodas ich es mit ESC stoppen muß.
Wie kann ich das ändern ?
Ps: wie muß es heißen damit die Ganze Spalte C gewählt wird ?
C1:C1000 ist ja so nicht richtig.
Vielen Dank
Gruß
Erik

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA aus Kleinbuchstaben > Großbuchstaben machen
06.01.2016 13:42:35
Sepp
Hallo Erik,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range

On Error GoTo Errorhandler

Application.EnableEvents = False

If Not Intersect(Target, Range("C:C")) Is Nothing Then
  For Each Zelle In Intersect(Target, Range("C:C"))
    Zelle = UCase(Zelle.Value)
  Next Zelle
End If

Errorhandler:

Application.EnableEvents = True
End Sub

Gruß Sepp

Anzeige
AW: VBA aus Kleinbuchstaben...
06.01.2016 13:43:11
Bernd
Hi,
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column  3 Then Exit Sub
Target.Value = UCase(Target.Value)
End Sub
mfg Bernd

VBA aus Kleinbuchstaben > Großbuchstaben machen
06.01.2016 13:43:11
Hajo_Zi
Halo Erik,
Du solltest die Reaktion auf die Eingabe abschalten

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C1:C1000")) Is Nothing Then
Application.EnableEvents = False
Dim Zelle As Range
For Each Zelle In Range("C1:C1000" & Cells(Rows.Count, 1).End(xlUp).Row)
Zelle = UCase(Zelle.Value)
Next Zelle
Application.EnableEvents = True
End If
End Sub

warum immer alle Zellen muss uns nicht klar sein.

Anzeige
Ereignissmakros ausschalten
06.01.2016 13:43:26
ransi
Hallo,
Schua dir mal Application.EnableEvents an.
ransi

VBA aus Kleinbuchstaben > Großbuchstaben machen
06.01.2016 13:44:13
Hajo_Zi
Halo Erik,
Du solltest die Reaktion auf die Eingabe abschalten

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C1:C1000")) Is Nothing Then
Application.EnableEvents = False
Dim Zelle As Range
For Each Zelle In Range("C1:C1000" & Cells(Rows.Count, 1).End(xlUp).Row)
Zelle = UCase(Zelle.Value)
Next Zelle
Application.EnableEvents = True
End If
End Sub

warum immer alle Zellen muss uns nicht klar sein.

Anzeige
warum immer die Spalte komplett neu abklappern?
06.01.2016 14:58:22
Matthias
Hallo
Warum denn immer die Spalte komplett neu abklappern?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then Target = UCase(Target)
End Sub
Gruß Matthias

AW: warum immer die Spalte komplett neu abklappern?
06.01.2016 15:14:18
Erik
Hallo zusammen !
Danke an alle, die mir mit Rat und Tat geholfen haben.
PS.: Matthias, wenn ich bei Deinem Vorschlag mehrer Zellen in Spalte C markiere und lösche kommt
die Fehlermeldung: Laufzeitfehler 13 Typen unverträglich !
Gruß
Erik

And Target.Count = 1
06.01.2016 15:17:10
Matthias
Hallo
Dann musst Du eben abfragen ob Target.count=1 ist
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Count = 1 Then Target = UCase(Target)
End Sub
Gruß Matthias

Anzeige
AW: And Target.Count = 1
06.01.2016 15:45:17
Hajo_Zi
Hallo Erik,
Hallo Matthias,
das führt aber ab 2007 zu einem Fehler, falls Spalte markiert.
Alle Zellen in größer 2007
für alle Versionen
Public Sub Beispiel()
Dim dblCount As Double
dblCount = CallByName(Selection, IIf(Val( _
Application.Version) > 11, "CountLarge", "Count"), VbGet)
MsgBox dblCount
End Sub

‘ von Nepumuk

Danke für die Info
06.01.2016 16:00:06
Matthias
Hallo Hajo
Hab leider nur als MaxVersion die Version XL2007
Aber jetzt wo Du es schreibst meine ich das schonmal gelesen zu haben
Danke Hajo, hoffentlich vergess ich es nicht wieder.
Gruß Matthias

Anzeige
AW: And Target.Count = 1
06.01.2016 16:06:19
Daniel
Dann werden aber die Werte nicht umgewandelt, wenn ich aus einem anderen Zellbereich mehrere Zellen kopiere und nach Spalte C einfüge, oder mehrere Zellen gleichzeitig mit hilfe von STRG+ENTER mit dem selben Wert befülle!
Gruss Daniel

AW: warum immer die Spalte komplett neu abklappern?
06.01.2016 15:15:49
Daniel
Hi Michael
dein Code landet auch in einer Endlosschleife, welche VBA bei mir nach 85 Umläufen gnädigerweise abbricht.
Eine Fehlermeldung unterbleibt, weil du keine Variablen verwendest und es deswegen keinen Speicherüberlauf gibt.
ausserdem sollte man berücksichtigen, dass es durchaus möglich ist, mehrere Zellen gleichzeitig zu ändern (bspw durch Kopieren-Einfügen)
daher besser so, das Application.EnableEvents = False verhindert den Selbstaufruf des Events beim Ändern eines Zellwerts:
 Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
If Not Intersect(Target, Columns(3)) Is Nothing Then
Application.EnableEvents = False
For Each Zelle In Intersect(Target, Columns(3))
Zelle.Value = UCase(Zelle.Value)
Next
Application.EnableEvents = True
End If
End Sub
Gruss Daniel
Anzeige

196 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige