Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
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

Kapitälchen im definierten Bereich

Kapitälchen im definierten Bereich
19.04.2016 16:23:46
Addi
Hallo Zusammen,
ich möchte in einem definierten Bereich, z.B. in Sheet1 im Bereich A23:Y1235 alle darin enthaltenen Wörter in Kapitälchen umwandeln. Mit Kapitälchen meine ich alles in Großbuchstaben, den ersten Buchstaben in jedem Wort aber nochmals hervorgehoben indem er in der Schriftgröße 1 Punkt größer wird.
Habt Ihr eine Idee?
Vielen Dank und Gruß
Adrian

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ja, verwende eine Kapitälchen-Schriftart ...
19.04.2016 16:38:46
Luc:-?
…wie bspw Copperplate, Adrian!
Gruß, Luc :-?
Besser informiert mit …

AW: Kapitälchen im definierten Bereich
19.04.2016 16:41:06
Daniel
Hi
durchsuch mal deine Schriftarten, ob du da eine hast, welche die Kleinbuchstaben wie Grossbuchstaben darstellt, nur etwas kleiner und Formatiere dann den Zellbereich mit dieser Schriftart.
Ggf kannst du so eine Schriftart auch im WWW finden und dir installieren
https://www.searchfreefonts.com/categories/smallcaps.htm?p=1
Gruß Daniel

Anzeige
AW: Kapitälchen im definierten Bereich
19.04.2016 16:46:10
Addi
Hallo Daniel, Hallo Luc,
leider ist dies keine Alternative, da ich an Calibri gebunden bin (Corporate Design)!
Muss doch auch über ein Coding gehen...oder?
Gruß, Adrian

AW: Kapitälchen im definierten Bereich
19.04.2016 17:06:52
Daniel
Hi
sowas geht auch über Coding.
probier mal das, bearbeitet wird der selektierte Bereich:
Sub Kapitälchen()
Dim Zelle As Range
Dim txt As String
Dim i As Long
Application.ScreenUpdating = False
For Each Zelle In Selection.SpecialCells(xlCellTypeConstants, 2)
txt = Zelle.Value
Zelle.Value = UCase(txt)
For i = 1 To Len(txt)
If Mid(txt, i, 1) Like "[A-ZÄÜÖ]" Then
With Zelle.Characters(i, 1).Font
.Size = .Size + 1
End With
End If
Next
Next
End Sub
Gruß Daniel

Anzeige
AW: Kapitälchen im definierten Bereich
19.04.2016 16:52:25
Peter
Hallo Adrian,
hier eine Teillösung, denn du verrätst ja nicht ob in einer Zelle mehr als ein Wort stehen kann/darf und auch nicht in welcher Schriftgröße die Großbuchstaben der Wörter sein sollen, so dass man nicht weiß, wie der erste Buchstabe um eins größer sein könnte.
Gruß Peter
Option Explicit
Public Sub Kapitaelchen()
Dim rZelle  As Range
With ThisWorkbook.Worksheets("Tabelle1")
For Each rZelle In .Range("A23:Y1235")
rZelle.Value = UCase(rZelle.Value)
Next rZelle
End With
End Sub

AW: Kapitälchen im definierten Bereich
19.04.2016 16:57:08
Addi
Hallo Peter,
vielen Dank für die Teillösung...
...also in den einzelnen Zellen steht mal ein Wort oder auch mal mehrere - ganz unterschiedlich.
Die Standard Schriftgröße ist 11 und der erste Buchstabe im Wort soll 12 sein.
Vielen Dank und Gruß,
Adrian

Anzeige
AW: schau Dir mal das an ...
19.04.2016 17:28:45
Addi
Hallo Matthias,
vielen Dank - das funktioniert - man muss halt nur den relevanten Bereich markieren - aber das ist ja kein Problem.
Vielen Dank Dir und allen anderen
Adrian

Markieren musst du hierbei auch, ...
19.04.2016 19:27:15
Luc:-?
…Addi,
damit bist du flexibel; anderenfalls müsstest du ggf immer eine Konstante austauschen:
Sub Kapitaelchen()
Const plusSize As Single = 1, liGB$ = "[A-ZÄÖÜ]"
Dim pix As Long, liPos, xP, xV As Variant, xZ As Range
For Each xZ In ActiveWindow.RangeSelection
On Abs(xZ = "") GoTo nx
xV = StrConv(xZ, vbUnicode): xV = Left(xV, Len(xV) - 1)
For Each xP In Split(xV, Chr(0))
pix = pix + 1
If xP Like liGB Then liPos = liPos & " " & CStr(pix)
Next xP
liPos = Split(LTrim(liPos)): xZ = UCase(xZ)
For pix = LBound(liPos) To UBound(liPos)
With xZ.Characters(CInt(liPos(pix)), 1)
.Font.Size = .Font.Size + plusSize
End With
Next pix
nx:     pix = 0: liPos = Empty
Next xZ
End Sub
Gruß, Luc :-?

Anzeige
Hallo Luc, ich grüße Dich ...
19.04.2016 19:47:46
Matthias
Hallo
Bei meinem Test Deines Beispiels sind aber alle Zeichen gleich in der Höhe!
Gruß Matthias

Bei mir nicht, aber der Unterschied ist sehr ...
19.04.2016 20:24:46
Luc:-?
…klein bei Calibri, Matti;
ändere mal plusSize auf 2! Sind sie dann deutlich größer oder nicht?
Allerdings eignet sich das Pgm nicht für Unicode-Schriften. Da muss man dann 'ne klassischere Methode verwenden (s. Reinhard bzw Daniel).
Gruß, Luc :-?

nee, passiert nix selbst nicht bei Size:30
19.04.2016 20:38:13
Matthias
Hi Luc
Mehr wie probieren kann ich ja nicht. Alle Zeichen gleich
Ist das ein Versionskonflikt ? Hab nur 2007
Userbild
Gruß Matthias

Anzeige
Viell hat da'n geheimnisvoller XlAutomatismus, ...
19.04.2016 21:40:15
Luc:-?
…quasi die Xl12-Rullerpucker bzw der Xl12-Klabauter, seine Griffel im Spiel, Matti; ;-)
unter Xl10 geht's.
StrConv sollte eigentl auch unter Xl12 fktionieren.
Luc :-?

geh jetzt offline ...
19.04.2016 20:49:44
Matthias

AW: Kapitälchen im definierten Bereich
21.04.2016 18:23:38
Peter
Hallo Adrian,
wenn auch erst heute, so doch eine Komplett-Lösung
Option Explicit
Public Sub Gross()
Dim rZelle     As Range
Dim iPosition  As Integer
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen!
For Each rZelle In .Range("A23:Y1235" & .Cells(.Rows.Count, 2).End(xlUp).Row)
If Trim$(rZelle.Value)  "" Then
rZelle.Value = UCase(rZelle.Value) ' alles groß schreiben
rZelle.Font.Size = 11              ' die normale Schriftgröße
rZelle.Font.Name = "Calibri"       ' die Schrift auswählen
'              den ersten Buchstaben der Zelle um 2 Punkte größer schreiben
.Range(rZelle.Address).Characters(Start:=1, Length:=1).Font.Size = _
.Range(rZelle.Address).Characters(Start:=1, Length:=1).Font.Size + 2
iPosition = 1
Do
iPosition = InStr(iPosition, rZelle, " ") ' an welcher Stelle ist ein  _
Leerzeichen?
If iPosition = 0 Then Exit Do
iPosition = iPosition + 1 ' das Zeichen nach der Leerstelle
If Mid(.Range(rZelle.Address), iPosition, 1) Like "[A-ZÄÖÜ]" Then
'                    nach jedem Leerzeichen den Wortanfang der Zelle um 2 Punkte größer  _
schreiben
.Range(rZelle.Address).Characters(Start:=iPosition, Length:=1).Font.Size = _
.Range(rZelle.Address).Characters(Start:=iPosition, Length:=1).Font.Size +  _
2
End If
Loop Until iPosition = 1
End If
Next rZelle
End With
Application.ScreenUpdating = True
End Sub

Gruß Peter

Anzeige
Wenn etwas angepasst wdn muss/kann, ...
21.04.2016 19:36:19
Luc:-?
…Peter,
schreibt man das in eine Konstante am PgmAnfang. Das macht eine pgmweite Änderung später leicht. Ist hier zwar nicht so wild, sollte man sich aber grundsätzlich angewöhnen! ;-]
Gruß, Luc :-?

das sind aber keine Kapitälchen
21.04.2016 21:19:35
KlausF
Hallo Peter und Addi,
die Lösung ist zwar gut aber typografischer Blödsinn. Kapitälchenschrift bedeutet nicht,
dass jedes Wort am Anfang mit einem größeren Versal beginnt, sondern
dass nur die Substantive (wie bei der Normalschrift) und die Satzanfänge mit größerem
Versal anfangen.
Beispiel:
Heute kam er spät nach Hause
in Kapitälchenschrift:
HEUTE KAM ER SPÄT NACH HAUSE
Nur die fetten Versalien dürfen hier größer sein.
Das was Addi haben will hat mit Kapitälchenschrift nichts zu tun.
Gruß
Klaus

Anzeige
Daniels Lösung ist korrekt
21.04.2016 21:50:23
KlausF
Hi,
die Lösung von Daniel ist die richtige ...
Gruß
Klaus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige