Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit VBA Zellen durchsuchen und gewisse Einträge ersetzen, ohne die Formel zu beeinflussen

Frage Microsoft Microsoft Office

Mitglied: wydy

wydy (Level 1) - Jetzt verbinden

03.08.2009, aktualisiert 13:26 Uhr, 14065 Aufrufe, 3 Kommentare

Wie kann ich alle Zellen nach einer bestimmten Zeichenkette durchsuchen, ohne die Formeln abzuändern

Moin Leute,
ich erstelle zurzeit eine Excel "Vorlage" und möchte in dieser mit VBA eine Funktion einbauen, wo in an allen wichtigen Stellen das gewünschte Jahr eingetragen wird. Man hat auf der Startseite eine Zelle, in der man die Jahrzahl eingeben kann und daneben einen Button. Wird der Button bestätigt, sollen alle Zellen nach dem Wert "TempDatum" durchsucht und der Wert von der Zelle dort eingetragen werden. Jedoch funktioniert das ganze nicht wirklich. In normalen Zellen wird der Wert ohne Probleme ersetzt. Sobald es sich jedoch um eine Formel handelt, spielt das ganze verrückt. Ist die Formel ungültig, bricht das Programm mit der Fehlermeldung: Typen unverträglich ab. Ist die Formel jedoch gültig, wird die Formel gelöscht und nur ein Wert in der Zelle eingetragen. Gibt es eine Funktion um das Ganze zu lösen? Was mache ich falsch?
Hier mal ein paar Beispiele, damit ihr seht, was ich meine:
Neuer Wert: 2009

Das ist ein Text TempDatum -> Das ist ein Text 2009
='C:\Daten\TempDatum\[Daten.xls]Sheet1!A1 -> ='C:\Daten\2009\[Daten.xls]Sheet1!A1
Das erste Beispiel funktioniert auch, nur wird beim zweiten Beispiel bei mir die ganze Formel ersetzt.

Hier mal mein bisheriger Quelltext:
01.
Sub QuelleEdit() 
02.
   Dim intRow As Integer 
03.
   Dim intColumn As Integer 
04.
   Dim intPosition As Integer 
05.
   Dim stringText As String 
06.
       
07.
   stringOld = "TempDatum" 
08.
   stringNew = Cells(9, 4) 
09.
   'Ganze Formular durchsuchen 
10.
   For intRow = 1 To 37 
11.
      For intColumn = 1 To 78 
12.
        'Inhalt ersetzen 
13.
        Cells(intRow, intColumn) = Replace(Cells(intRow, intColumn), stringOld, stringNew) 
14.
      Next intColumn 
15.
   Next intRow 
16.
End Sub
Ich hab's auch schon mit WorksheetFunction.Substitute versucht.
Mitglied: bastla
03.08.2009 um 13:55 Uhr
Hallo wydy!

Versuch's mit folgender Zeile 13:
Cells(intRow, intColumn).Formula = Replace(Cells(intRow, intColumn).Formula, stringOld, stringNew)
Was mache ich falsch?
Wenn Du für Cells() keine Eigenschaft angibst, wird defaultmäßig nicht "Formula", sondern "Value" verwendet.

Grüße
bastla
Bitte warten ..
Mitglied: wydy
03.08.2009 um 14:48 Uhr
Danke für die Hilfe, mit Cells.Formula hats geklappt.
Bitte warten ..
Mitglied: 76109
03.08.2009 um 15:04 Uhr
Hallo wydy und bastla!

Eine For Each-Schleife sollte ausreichen:
01.
    Dim c As Range    
02.
    For Each c In Range("A1:BZ37") 'Zeile 1-37, Spalte 1-78 
03.
        c.Formula = Replace(c.Formula, stringOld, stringNew) 
04.
    Next
Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
gelöst VBA Zellen dublizieren plus Wenn Dann Funktion (4)

Frage von grasihuepfer zum Thema VB for Applications ...

Microsoft Office
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

VB for Applications
gelöst Wie mittels VBA beim Import von CSV dateien das Format aller Zellen auf "Zahl" ändern? (2)

Frage von Glibber4 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...