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

Makro zum Ersetzen von Werten

Makro zum Ersetzen von Werten
Werten
Hallo Excelianer,
könnt Ihr mir ein Makro schreiben mit folgender Anforderung:
Ersetze (Wert aus Tabelle2 - F43) durch (Wert aus Tabelle2 - D43) auf der gesamten Arbeitsmappe mit Ausnahme von Tabellenblatt Tabelle2.
Angabe F43 (Beispiel): 2011
Angabe D43 (Beispiel): 2012
Danke im Voraus.
Grüße
Martin

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro zum Ersetzen von Werten
25.05.2011 10:07:17
Werten
Hallo Martin,
lad doch mal eine Beispieldatei hoch!
Gruß,
Ptonka
AW: Makro zum Ersetzen von Werten
25.05.2011 10:16:21
Werten
Hallo Martin,
das Ersetzen als solches ist kein Problem. Allerdings gibt es ein paar Fragen bzw. Randbedingungen, die geklärt sein müssen.
1. Hast du schon mal versucht manuell mit Suchen/Ersetzen in einem der Tabellenblätter 2011 durch 2012 zu ersetzen? Ging das ohne Probleme?
Welche Einstellungen hast du dabei im entsprechenden Dialogfenster gemacht?
2. Wo kann 2011 in den Zellen gefunden werden?
- als Wert in Zellen
- In Formeln als Teil des Dateinamens oder Pfades bei Verknüpfungen auf externe Dateien
- In Formeln als Teil von Blattnamen
Falls 2011 in Verknüpfungen auf externe Dateien existiert, dann sollten die entsprechenden Verzeichnisse und Dateien schon existieren. Gleiches gilt für 2011 als Teil von Blattnamen in Formeln.
3. Kann in Formeln 2011 als Zeilennummer von Zellen vorkommen.
Falls ja, dann wird es mit dem automatischen Ersetzen sehr problematisch, da in solchen Zellen 2011 ja nicht ersetzt werden darf.
Gruß
Franz
Anzeige
AW: Makro zum Ersetzen von Werten
25.05.2011 11:09:21
Werten
Hallo Franz,
Danke für die schnelle Antwort.
Zu 1: Ja, ich habe es ausprobiert. Es ging nicht problemlos, da die Dateien noch nicht vorhanden waren. Prinzipiell ging es aber.
Zu 2: Es sollen nur die Werte der Dateinamen geändert werden, also:
I:\Leistungsgruppe 2011\[Anwesenheit 2011.xls] in
I:\Leistungsgruppe 2012\[Anwesenheit 2012.xls]
Als Anleitung gebe ich an, dass der entsprechende Ordner und die entsprechende Datei vorher erstellt werden muss. Wenn Du mir eine vorherige Kontrolle des Vorhandenseins einbauen kannst wäre das super, ist aber nicht zwingend erforderlich.
zu 3. Nachdem Du mich auf den Gedanken gebracht hast muss ich sagen: Ja, die Angabe '2011' kommt auch in Zeilennummern vor. Kann man aus diesem Grund die Ersetzung auf folgende Tabellenblätter beschränken (bei folgenden Tabellenblättern soll eine Ersetzung erfolgen):
Tabelle1 (Fragebögen)
Tabelle3 (Teilnehmer)
Tabelle6 (Datenblatt)
Danke und Grüße
martin
@Ptonka: Die Datei ist leider zu umfangreich. Wenn ich Sachen weglasse, um sie hochzuladen, kann es natürlich sein, dass ich (unbeabsichtigt) Dinge weglasse, die nachher zu einem Fehler führen
Anzeige
AW: Makro zum Ersetzen von Werten
26.05.2011 04:05:57
Werten
Hallo Martin,
hier mein Vorschlag. Es wird nicht die Suchen/Ersetzen-Funktion verwendet, sonder der Inhalt der einzelnen Zellen geprüft und ggf. ersetzt. So kann man das Ersetzen etwas feiner steuern.
Während des Ersetzens dürfen die Verknüpften Dateien nicht geöffnet sein, da sonst die Pfadangabe in den Formeln fehlt und ggf. Problem auftreten.
Fall vor der Jahreszahl in den Formeln immer ein Leerzeichen steht, dann kannst du den Such-/Ersetztstring entsprechend anpassen. Formeln mit Zeilennummern größer oder gleich Jahr sind dann kein Problem mehr und du kannst das Ersetzen auf alle gewünschten Blätter ausdehnen.
Gruß
Franz
Sub Jahr_in_Formeln_ersetzen()
'Ersetzt das Jahr in Formeln und Texten
Dim wks As Worksheet, sJahrAlt, sJahrNeu, Zelle As Range
Dim StatusCalc As Long
On Error GoTo Fehler
With Worksheets("Tabelle2")              'Blattname ggf. anpassen
sJahrAlt = .Range("F43").Text
'    sJahrAlt = " " & .Range("F43").Text  'Verwenden, wenn vor der Jahreszahl in den _
Formeln immer ein Leerzeichen steht
sJahrNeu = .Range("D43").Text
'    sJahrNeu = " " & .Range("D43").Text  'Verwenden, wenn vor der Jahreszahl in den _
Formeln immer ein Leerzeichen steht
End With
'Makrobremsen lösen
With Application
.EnableEvents = False
StatusCalc = .Application.Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.StatusBar = "Makro ""Jahr_in_Formeln_ersetzen"" wird zurZeit ausgeführt"
End With
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case "Tabelle2", "Fragebögen", "Teilnehmer", "Datenblatt"
'Nicht ersetzen - Blattnamen ggf. anpassen/ergänzen
Case Else
Application.DisplayAlerts = False
For Each Zelle In wks.UsedRange
If Zelle.HasFormula = True Then
'Zelle enthält eine Formel
Zelle.Formula = Replace(Zelle.Formula, Find:=sJahrAlt, Replace:=sJahrNeu)
ElseIf IsNumeric(Zelle) Then
'Zellwert ist nummerisch - do nothing
ElseIf IsDate(Zelle) Then
'Zellwert ist Datum - do nothing
Else
'Zelle enthält Text
Zelle.Value = Replace(Zelle.Value, Find:=sJahrAlt, Replace:=sJahrNeu)
End If
Next
Application.DisplayAlerts = True
End Select
Next
MsgBox "Fertig!", vbInformation + vbOKOnly, "Jahr ersetzen"
'Fehlerbehandlung
Err.Clear
Fehler:
With Err
Select Case .Number
Case 0 'kein Fehler
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
.StatusBar = False
End With
'Variablen aufräumen
Set wks = Nothing: Set Zelle = Nothing 'Objektvariablen zurücksetzen
End Sub

Anzeige
Vielen Dank
26.05.2011 14:59:34
Martin
Hallo Frank,
den Code werde ich in nächster Zeit prüfen. Ich gehe davon aus, dass ich die Anpassungen von alleine hinbekomme. Wenn nicht, wende ich mich ans Forum ;-)
Vielen Dank
Martin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige