Anzeige
Archiv - Navigation
1900to1904
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 code "umschreiben" ?

VBA code "umschreiben" ?
26.09.2022 14:37:55
Werner
Hallo
ich habe einen VBA Code im Internet gefunden,
https://de.extendoffice.com/documents/excel/4554-excel-extract-capital-letters.html#a1
um aus eine Zelle alle Wörter die groß geschrieben sind "auszulesen"
Ich bekomme es jedoch leider nicht hin, diesen Code in den VBA-Editor so abzuändern,
dass er funktioniert
Kann jemand helfen ? Würde mich sehr freuen
Hier der Code von der inet-Seite
Funktion StrExtract (Str As String) As String 'Updateby Extendoffice
Application.Volatile Dim xStrList als Variante Dim xRet als String Dim I so lange Wenn Len (Str) = 0, dann Exit-Funktion xStrList = Split (Str, "") Wenn UBound (xStrList)> = 0 Dann für I = 0 bis UBound ( xStrList) Wenn xStrList (I) = StrConv (xStrList (I), vbProperCase), dann xRet = xRet & xStrList (I) & "" End If Next StrExtract = Left (xRet, Len (xRet) - 1) End If End Function
Danke vorab
Werner

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA code "umschreiben" ?
26.09.2022 14:41:34
onur
Das ist kein Code, das ist Wortsalat., Poste das mal vernünftig.
AW: VBA code "umschreiben" ?
26.09.2022 14:44:09
Der
Alleine das ist schon der Brüller:
Dim xStrList als Variante
AW: VBA code "umschreiben" ?
26.09.2022 14:57:28
Werner
Hi
Danke für die ersten Spontan-Reaktionen
jaaa auf der Inetseite ist der Code um "deutsche Beschreibungen dazwischen" ergänzt
Diese Beschreibungen müssten halt "raus"
Dafür ist jedoch mein VBA-Knowhow nicht ausreichend.
Im Link auf die Inet-Seite ist die Erläuterung für den Code ja enthalten
Gruß
Werner
AW: VBA code "umschreiben" ?
26.09.2022 14:58:30
peterk
Hallo

Function StrExtract(Str As String) As String
Application.Volatile
Dim xStrList As Variant
Dim xRet As String
Dim I As Long
If Len(Str) = 0 Then
Exit Function
Else
xStrList = Split(Str, " ")
If UBound(xStrList) >= 0 Then
For I = 0 To UBound(xStrList)
If xStrList(I) = StrConv(xStrList(I), vbProperCase) Then
xRet = xRet & xStrList(I) & " "
End If
Next
StrExtract = Left(xRet, Len(xRet) - 1)
End If
End If
End Function
Peter
Anzeige
AW: Google-Translator
26.09.2022 15:05:47
Fennek
Hallo,
VBA ist bekanntlich englich, hier etwas frei interpretiert:

Function StrExtract(ByVal Str As String) As String
Dim Ll, Ret As String
Ll = Split(Str)
For i = 0 To UBound(Ll)
If Ll(i) = StrConv(Ll(i), vbProperCase) Then Ret = Ret & Ll(i) & " "
Next i
StrExtract = Trim(Ret)
End Function
mfg
mit Select Case
26.09.2022 15:34:32
Yal
Warum das ganze Wort transformieren und prüfen, wenn nur die erste Buchstabe zählt?

Function StrExtract(Str As String) As String
Dim Erg As String
Dim Wort As String
For Each Wort In Split(Str) 'Split arbeitet per Default mit Leerzeichen
Select Case Left(Wort, 1)
Case "A" To "Z": Erg = Erg & " " & Wort
End Select
Next
StrExtract = Trim(Erg)
End Function
Nur Spielerei ohne wesentliche Mehrwert ;-)
VG
Yal
Anzeige
AW: mit Select Case
26.09.2022 16:01:47
Werner
Hi
Ich danke euch allen für die schnelle Beantwortung :)
BG
Werner
mit Regular Expression
26.09.2022 16:10:41
Yal
auch nicht zu vergessen, wie im ersten Beispile des Links von Werner: mit RegExp

Function ExtractCap(Txt As String) As String
Dim objRegExp As Object
Dim objMatch As Object
Dim E
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "[A-Z]\S+"
objRegExp.Global = True
Set objMatch = objRegExp.Execute(Txt)
For Each E In objMatch
ExtractCap = Trim(ExtractCap) & " " & E
Next
Set objRegExp = Nothing
End Function
VG
Yal
AW: VBA code "umschreiben" ?
26.09.2022 16:02:40
Werner
ich Danke euch alle für die Beantwortung
BG
Werner
Anzeige
AW: VBA code "umschreiben" ?
26.09.2022 16:25:36
snb

Sub M_snb()
sn = Split("Die erste fünf Worte sind es nicht")
For j = 0 To UBound(sn)
If Left(sn(j), 1) Like "[a-z]" Then sn(j) = ""
Next
MsgBox Application.Trim(Join(sn))
End Sub

RegExp.Replace
26.09.2022 17:02:24
Yal
Amazing: es gibt eine Unterschied zwischen VBA.Trim und Application.Trim: letzteres reduziert die mehrfach nacheinander vorkommenden Leerzeichen innerhald eines Satzes.
Nur vollständigkeitshalber, die "replace" Version mit RegExp:

Function ExtractCap(Txt As String) As String
With CreateObject("VBScript.RegExp")
.Pattern = "(\b[^A-Z]*)"
.Global = True
ExtractCap = Application.Trim(.Replace(Txt, " "))
End With
End Function
Sub Test_snb()
Debug.Print ExtractCap("Die erste fünf Worte sind es nicht, sagte SNB")
End Sub
VG
Yal
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige