Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1856to1860
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
Zelle suchen und Inhalt kleinschreiben
01.12.2021 19:28:22
Fritz
Hallo ihr Excel-Experten,
Ich habe eine Exceltabelle in der stehen in mehreren Zellen mpeg- Dateinamen.
Ich benutze diese Datei für ein Linux-Programm.
Nun meckert mich dieses jedes Mal an, wenn der Name in der Exceldatei mit der Datei in der Groß/Kleinschreibung nicht übereinstimmt.
(In Windows ist das kein Problem, dem interessiert es nicht )
Daher bin ich auf die Idee gekommen diese Namen alle in Kleinschrift zu ändern.
Nun ist es sehr mühselig jede Zelle zu suche und dann zu ändern.
Daher meine Frage hat jemand eine Makrolösung ?
Also nach der Zelle mit den Inhalt ".mpeg" suchen und den Zelleinhalt in Kleinschrift ändern.
Gleichzeitig wäre es auch noch schön wenn auch die Umlaute (also ä in ae usw.) in dieser Zelle mit geändert würden, denn die mag das Programm auch nicht.
Ich bedanke mich schon mal im voraus für Eure Lösungsvorschläge.
Gruß
Fritz

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nutze die Funktion KLEIN() owT
01.12.2021 19:35:08
neopa
Gruß Werner
.. , - ...
AW: Zelle suchen und Inhalt kleinschreiben
01.12.2021 19:36:52
{Boris}
Hi,
teste mal:

Sub test()
Dim C As Range
For Each C In ActiveSheet.UsedRange
If LCase(C) Like "*.mpeg" Then
C = LCase(C)
C = Replace(C, "ä", "ae")
C = Replace(C, "ö", "oe")
C = Replace(C, "ü", "ue")
End If
Next C
End Sub
VG, Boris
AW: Zelle suchen und Inhalt kleinschreiben
01.12.2021 21:33:27
Fritz
Hallo Boris,
das funktioniert schon mal sehr gut.
Jetzt habe ich noch ein Frage.
Ich habe mehrere Dateien und da schreibt immer wieder einer was rein.
Ich würde mir gerne eine Dateien mit mehreren Commandbutton erstellen, damit die Dateien öffnen --> alle Tabellenblätter ändern --> Datei speichern und schließen.
Hatte mir das so gedacht, funktioniert aber nicht

Sub test()
Dim C As Range
Dim ws As Worksheet
Workbooks.Open "d:\Test123"
For Each ws In Worksheets
For Each C In ActiveSheet.UsedRange
If LCase(C) Like "*.png" Then
C = LCase(C)
C = Replace(C, "ä", "ae")
C = Replace(C, "ö", "oe")
C = Replace(C, "ü", "ue")
C = Replace(C, "ß", "ss")
End If
Next C
Next ws
Workbooks("Test123.xlsx").Close SaveChanges:=True
End Sub
Da meckert er beim LCase nach dem If mit Fehler 450
Kann mir jemand helfen?
Danke Fritz
Anzeige
AW: Zelle suchen und Inhalt kleinschreiben
01.12.2021 21:41:45
Fritz
Nicht wundern wegen den .png, habe das selbe auch für Bilddateien
AW: Das ActiveSheet wird so nicht geändert, ...
01.12.2021 22:31:04
Fritz
?
Mit ws wechsle ich doch nur das Tabellenblatt und C steht doch für den Bereich in dem das ersetzt werden soll, oder nicht?
Ich fange auch gerade erst an mich damit zu beschäftigen, daher erhoffe ich mir hier ja Hilfe.
Also wenn das "C" durch das "ws" ersetze geht das auch nicht.
Ich glaube eher das liegt daran, das ich das Makro aus einer anderen Datei ausführe.
Wenn ich das Makro in die Datei reinkopiere und dann ausführe funktioniert es.
(Musste nur noch die Tabellen-Aktivierung, bei jeder Schleife einfügen damit das in allen Tabellen ausführt wird)
Das sähe dann so aus:

Sub test()
Dim C As Range
Dim ws As Worksheet
For Each ws In Worksheets
 ws.Activate
For Each C In ActiveSheet.UsedRange
If LCase(C) Like "*.png" Then
C = LCase(C)
C = Replace(C, "ä", "ae")
C = Replace(C, "ö", "oe")
C = Replace(C, "ü", "ue")
C = Replace(C, "ß", "ss")
End If
Next C
Next ws
End Sub
Die Erkenntnis hilft mir nur nicht weiter.
Gruß Fritz
Anzeige
Das Grundprinzip...
01.12.2021 22:36:43
{Boris}
Hi,
...hast Du noch nicht ganz verstanden ;-)
Das muss so aussehen:

Sub test()
Dim C As Range
Dim ws As Worksheet
For Each ws In Worksheets
For Each C In ws.UsedRange
If LCase(C) Like "*.png" Then
C = LCase(C)
C = Replace(C, "ä", "ae")
C = Replace(C, "ö", "oe")
C = Replace(C, "ü", "ue")
C = Replace(C, "ß", "ss")
End If
Next C
Next ws
End Sub
Kommste selbst drauf, warum das so sein muss ;-)
VG, Boris
AW: Das Grundprinzip...
01.12.2021 23:09:01
Fritz
Aah okay, damit erspare ich mir das umständliche aktivieren der Tabellenblattes
Da habe ich den Chat von Luc nicht richtig verstanden.
Sind halt teilweise noch böhmische Dörfer für mich.
Wie heißt es so schön: learning by doing
Aber den ursprünglichen Fehler, wenn ich das aus einer anderen Datei ausführen will behebt das auch nicht.
:-(
Anzeige
Dann musst du noch die ZielDatei angeben! owT
02.12.2021 00:01:42
Luc:-?
:-?
AW: Dann musst du noch die ZielDatei angeben! owT
02.12.2021 05:33:58
Fritz
Hatte ich bereits gepostet
sieht dann so aus:

Sub test()
Dim C As Range
Dim ws As Worksheet
Workbooks.Open "d:\Test123"
For Each ws In Worksheets
For Each C In ws.UsedRange
If LCase(C) Like "*.png" Then
C = LCase(C)
C = Replace(C, "ä", "ae")
C = Replace(C, "ö", "oe")
C = Replace(C, "ü", "ue")
C = Replace(C, "ß", "ss")
End If
Next C
Next ws
Workbooks("Test123.xlsx").Close SaveChanges:=True
End Sub
Funktioniert aber nicht weil es beim erste LCase mit einer Fehlermeldung stehen bleibt
AW: Dann musst du noch die ZielDatei angeben! owT
02.12.2021 06:25:47
Luschi
Hallo Fritz,
habe Deinen Vba-Code nochmals getestet und da kommt bei mir kein Fehler. LCase wird bei Dir aber angemeckert, weil ein ungültiger Vba-Verweis die Ausführung von Vba-Bibliotheken verhindert.
siehe mal hier:
https://communities.bentley.com/communities/user_communities/bentley_general_de/w/bentleygeneralde-wiki/19347/vba-fehler-bei-ausfuhrung-projekt-oder-bibliothek-nicht-gefunden
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Dann musst du noch die ZielDatei angeben! owT
03.12.2021 15:13:34
Fritz
Hallo,
hast Du mit dem Code eine andere Datei öffnen können und dann wurde alles ausgeführt?
Ich habe es jetzt an 3 verschiedenen Rechnern (Office 2016 und 2019) probiert und bei keinen läuft das Makro.
Ich bekomme auch nicht die FM wie im Link beschrieben "kann Projekt oder Bibliothek nicht finden", sondern "Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft".
Daher hilft dieser mir auch nicht wirklich weiter.
Wenn ich aber das Makro innerhalb des eigenen Workbooks (natürlich ohne Datei öffnen) ausführe, dann funktioniert alles.
Ich stehe hier Irgendwie auf den Schlauch und komme nicht weiter.
Bin jede Hilfe dankbar.
Gruß
Fritz
Anzeige
Fehler gefunden
03.12.2021 15:40:29
Fritz
Hallo,
danke an alle die geholfen haben, aber ich habe den Fehler jetzt gefunden.
Ich hatte in meiner Datei noch ein Modul mit "Sub LCase()" .
Als ich jetzt, in diesem Code, mir mit der rechten Maustaste auf LCase unter Definition die LCase-Funktion angeschaut hatte, wurde dieses Modul angezeigt anstatt der Objektkatalog.
Habe das Sub von den anderen Modul umbenannt und siehe da, jetzt funktionierts.
Wieder was dazugelernt.
So ein blöder Fehler.
Gruß
Fritz
Wb öffnen ist das Eine, ...
02.12.2021 12:00:38
Luc:-?
…Fritz,
das Andere die Zuweisung zu einer Wb-Variablen, deren ws dann zu durchlaufen sind.
Luc :-?
Anzeige
Versteh ich nicht!
03.12.2021 14:48:52
Fritz
Hallo Luc:-?,
was du mit wb und ws meinst ist mir schon klar, aber nicht mit "die Zuweisung zu einer Wb-Variablen".
Ich muss mal sagen bin ich VBA Anfänger, steht auch im Level mit "kaum VBA Kenntnisse".
Ich lerne stetig dazu.
Aber solche Kommentare sind keine wirkliche Hilfe!
Wie wäre es wenn du mal ein Bespiel postest!
Gruß
Fritz
Code-Beispiel
03.12.2021 15:38:00
{Boris}
Hi Fritz,
was Luc sagen will: Es ergibt stets Sinn, mit Objektvariablen zu arbeiten, da diese die zugewiesenen Objekte bis zum Ende der Prozedur beinhalten und man sie dann nur noch mit ihrem Variablen-Namen ansprechen muss.
Schau Dir das Beispiel mal an:

Sub test()
Dim C As Range
Dim wS As Worksheet, wB As Workbook
Set wB = Workbooks.Open("d:\Test123")
For Each wS In wB.Worksheets
For Each C In wS.UsedRange
If LCase(C) Like "*.png" Then
C = LCase(C)
C = Replace(C, "ä", "ae")
C = Replace(C, "ö", "oe")
C = Replace(C, "ü", "ue")
C = Replace(C, "ß", "ss")
End If
Next C
Next wS
wB.Close SaveChanges:=True
End Sub
Zudem ist es immer hilfreich, in Variablennamen einen Großbuchstaben zu verwenden, da man ja den Code für Gewöhnlich durchgängig in kleinbuchstaben schreibt und der Compiler eine klein geschriebene Variable - so sie denn richtig geschrieben ist - so ändert, wie die Variable bei der Variablendeklaration zu Beginn genau benannt wurde. Also aus ws macht der Compiler wS, sofern die Variable zu Beginn mit Dim wS As Worksheet deklariert wurde. Da fällt ein Verschreiber sofort auf. Lediglich einbuchstabige Lauf-/Zählvariablen werden oft stets klein geschrieben - z.B. Dim x As Long.
Frag nach, wenn Du etwas nicht verstehst.
VG, Boris.
Anzeige
AW: Code-Beispiel
03.12.2021 15:44:55
Fritz
Danke für den Hinweis.
Aber wie gerade geschrieben habe ich jetzt ja meinen Fehler gefunden.
Werde es aber trotzdem noch so bei mir einpflegen.
Deine Beschreibung klingt für mich nachvollziehbar.
Gruß
Fritz

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige