1.6k Aufrufe
Gefragt in Tabellenkalkulation von ponscho Mitglied (323 Punkte)
Guten Abend liebe Forengemeinde!

ich habe folgendes Makro um in diversen Zellen immer GROSSBUCHSTABEN zu habe.
Leider weiss ich nicht mehr ob ich dieses Makro aus diesem Forum oder irgendwo im I-Net gefunden habe.

Ist es möglich das Makro so abzuändern, dass alle Wörter grossgeschrieben werden nur folgende normal, eben so wie ich sie eingegeben habe: Wwe., Ehefr. gnt. sive.
Beispiel: SIEMER gnt. HÖVENKEMPER

Ich arbeite mit Excel 2002.

Über Hilfe und Antworten würde ich mich freuen"

Internette Grüsse
Mick

6 Antworten

0 Punkte
Beantwortet von ponscho Mitglied (323 Punkte)
oh weh!! habe den Code vergessen anzugeben...

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If IsEmpty(Target) Then Exit Sub
If Intersect(Target, Range("D5")) _
Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Target = UCase(Target)
ERRORHANDLER:
Application.EnableEvents = True
End Sub


Internette Grüsse
Mick
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hi Mick,

Du schreibst

ich habe folgendes Makro um in diversen Zellen immer GROSSBUCHSTABEN zu habe.


Führst dann aber das Makro nicht auf. Wie soll man Dir da helfen?

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Mick,

nachfolgender VBA-Code sollte das machen, was Du Dir vorgestellt hast. Tausche ihn gegen Deinen vorhandenen Code aus.

Teste den Code aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim strWort() As String
Dim strText As String
Dim intWortIndex As Integer

If IsEmpty(Target) Then Exit Sub

If Intersect(Target, Range("D5")) _
Is Nothing Then Exit Sub

Application.EnableEvents = False
On Error GoTo ERRORHANDLER

strWort = Split(Target, " ")

For intWortIndex = 0 To UBound(strWort)
If strWort(intWortIndex) <> "Wwe." And strWort(intWortIndex) <> "Ehefr." And _
strWort(intWortIndex) <> "gnt." And strWort(intWortIndex) <> "sive." Then
strText = strText & " " & UCase(strWort(intWortIndex))
Else
strText = strText & " " & strWort(intWortIndex)
End If
Next
Target = Mid(strText, 2, Len(strText))
ERRORHANDLER:
Application.EnableEvents = True
End Sub

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von ponscho Mitglied (323 Punkte)
Hallo Oliver,

das Makro funktioniert tadellos. Vielen Dank dafür!!

Um evtl. die Wörter die normal geschrieben werden sollen zu erweitern
füge ich nur diesen Teil dazu?

And strWort(intWortIndex) <> "neues Wort"


und es auf mehrere Zellen zu erweitern hier einfach ein Komma?

If Intersect(Target, Range("D5,E5")) _


Internette Grüsse
Mick
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Mick,

richtig.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von ponscho Mitglied (323 Punkte)
Vielen Dank!

Einen ruhigen Abend noch.

Internette Grüsse
Mick
...