Makro mit Formula und Range
Hallo Supporter,
ich habe folgendes Problem:
Der Zellinhalt aller geöffneten Dokumente und Worksheets soll, wenn er ein "=", ein "[" und ein "S:" an der jeweiligen Stelle enhält, verändert werden (in Excel).
Folgendes Makro macht das auch, aber nur manchmal:
Sub Pfadaenderung()
Dim R As Range
Dim i As Integer
Dim Length As Integer
Dim Path_old As String
For Each wb In Workbooks
For Each ws In Worksheets
ActiveWorkbook.Save
For Each R In ws.UsedRange
If Left(R.Formula, 1) = "=" And InStr(R.Formula, "[") > 1 And InStr(R.Formula, "S:") > 1 Then
Path_old = R.Formula
i = InStr(R.Formula, ":")
Length = Len(R.Formula)
Path = Left(Path_old, i - 2) & "J:" & Right(R.Formula, Length - i)
R.Formula = Path
Else
End If
Next R
Next ws
ActiveWorkbook.Close Savechanges:=True
Next wb
End Sub
Wenns nicht klappt, kommt folgende Meldung:
"Laufzeitfehler: '-214...'"
"Die Methode 'Formula' für das Objekt 'Range' ist fehlgeschlagen"
Kann mir jemand helfen?
Danke schon im voraus.
Paulo
Antwort schreiben
Antwort 1 von gast89 vom 23.03.2020, 18:13 Options
Hallo Zusammen
Ich möchte das es mier bei der wahl einer Zelle (z Bsp. A1) automatisch mein Macro ausführt.
Die Wahl der Zelle ist meist mit dem Tabulator kann aber auch durch die maus etc. gewählt werden.
Ist es möglich Macros den Zellen zuzuweisen
Vielen Dank für die Hilfe
Roger
Antwort 2 von fedjo vom 23.03.2020, 18:26 Options
Hallo Roger,
in das Codefenster der Tabelle einfügen:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Address = "$A$1" Then
'Call dein Makro
Range("B1") = "A1"
End If
End Sub
Gruß
fedjo
Antwort 3 von Saarbauer vom 24.03.2020, 09:18 Options
Hallo @Paulo87,
hast du mal das Makro in Einzelschritten abgearbeitet?
In welcher Zeile kommt den die Fehlermeldung?
Hallo @gast89,
du solltest dein Problem grundsätzlich nicht in anderen Threads abhandeln, sondern eine neuen adfür eröffnen.
Gruß
Helmut
Antwort 4 von Paulo87 vom 26.03.2020, 08:06 Options
Hallo Helmut,
vielen Dank schonmal für deine Antwort.
ja, das hab ich gemacht.
Der Fehler kommt in der fett geschriebenen Zeile:
Sub Pfadaenderung()
Dim R As Range
Dim i As Integer
Dim Length As Integer
Dim Path_old As String
For Each wb In Workbooks
For Each ws In Worksheets
ActiveWorkbook.Save
For Each R In ws.UsedRange
If Left(R.Formula, 1) = "=" And InStr(R.Formula, "[") > 1 And InStr(R.Formula, "S:") > 1 Then
Path_old = R.Formula
i = InStr(R.Formula, ":")
Length = Len(R.Formula)
Path = Left(Path_old, i - 2) & "J:" & Right(R.Formula, Length - i)
[b]R.Formula = Path[/b]
Else
End If
Next R
Next ws
ActiveWorkbook.Close Savechanges:=True
Next wb
End Sub
Ich weiß nicht mehr weiter...
Finde es total seltsam, dass es manchmal ohne Probleme klappt und beim nächsten Mal wieder der Fehler auftritt...
Danach stürzt Excel auch ab mit Ausnahmefehler und so.
Mit freundlichen Grüßen
Paulo87
Antwort 5 von Paulo87 vom 26.03.2020, 08:07 Options
Super...jetzt zeigts die nicht fett an...
R.Formula = Path
ist die Zeile.
Antwort 6 von Saarbauer vom 26.03.2020, 09:34 Options
hallo,
hast du mal nachgesehen was in Path drinsteht wenn es funktioniert und wenn es nicht fuktioniert?
So kann ich auf anhieb in der Zeile kein Fehler entdecken
Gruß
Helmut
Antwort 7 von Paulo87 vom 26.03.2020, 13:00 Options
Hallo Helmut,
hab jetzt mal überprüft was in Path drinsteht.
Seitdem ist der Fehler nicht mehr aufgetaucht. Ist sehr komisch...
Aber so lange es so bleibt passts ja ;)
Danke dir auf jeden Fall.
Viele Grüße
Paulo87