Makro führt Befehl nicht aus
#1
Hallo zusammen,

warum führt das Makro meinen Befehl nicht aus?
Habe das Makro aufgezeichnet und dann über die Suchen und Ersetzen Funktion gearbeitet.

Kann mir das jemand vielleicht anpassen und sagen warum das nicht geht

Sub Fehlerbehebung()
'
' Fehlerbehebung Makro
'

'
    Range("D13:AH38").Select
    Selection.Replace What:="#Bezug!", Replacement:="G:G", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Sheets("Auswertungsübersicht").Select
    Range("D12").Select
    Cells.Replace What:="#Bezug!", Replacement:="D8", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub
Antworten Top
#2
Moin,

was funktioniert denn nicht? Gibt es eine Fehlermeldung? Oder ist das Ergebnis was du erwartest nur anders, als das Ergebnis, das du erhältst? Wo liegt der Unterschied? Und was willst du eigentlich erreichen? Und warum tauchen die Bezugsfehler überhaupt auf? Wäre es nicht sinnvoller, die Formeln oder das Datenmodell so zu gestalten, dass der Fehler gar nicht erst auftritt?

Viele Grüße
derHöpp
Antworten Top
#3
Guter Hinweis.

Es passiert einfach nichts.
Er ändert die Werte nicht bzw. es wird nichts ersetzt.
Antworten Top
#4
(06.03.2025, 15:37)derHoepp schrieb: Moin,

was funktioniert denn nicht?
Gibt es eine Fehlermeldung?
Oder ist das Ergebnis was du erwartest nur anders, als das Ergebnis, das du erhältst?
Wo liegt der Unterschied?
Und was willst du eigentlich erreichen?
Und warum tauchen die Bezugsfehler überhaupt auf?
Wäre es nicht sinnvoller, die Formeln oder das Datenmodell so zu gestalten, dass der Fehler gar nicht erst auftritt?

Viele Grüße
derHöpp

Zusatzfragen:
Wie rufst du das Makro auf?
Kannst du eine anonymisierte Beispieldatei zur Verfügung stellen anhand derer sich das Problem von uns nachvollziehen lässt?
Antworten Top
#5
Also

nein, es gibt keine Fehlermeldung. Es wirkt so, als würde er es ausführen nur halt ohne etwas zu ändern.

Das Ergebnis ist leider nicht anders, es ist unverändert, als hätte ich nichts gemacht.

Es gibt keinen Unterschied zwischen vorher und nachher.

Ich habe eine Datei wo ich Daten aus einem System aufbereite.
Für eine vernünftige Übersicht in einer Tabelle, sind hier in der Tabelle Formeln bzw. Verweise hinterlegt.
Sobald ich nun die Daten austausche entsteht dieses #Bezug!
Durch das Suchen und Ersetzen, könnte ich es mir leicht machen und das Problem beheben. Das funktioniert manuell auch wunderbar. Nur würde ich es gerne der Einfachheit über VBA lösen.

Zu dem umgestalten wüsste ich so nicht wie und es funktioniert ja auch mit VBA, mein Vorgänger hatte sowas mal hinbekommen, aber leider gibt es die Datei nicht mehr und die habe ich nun nach besten Wissen aus der Erinnerung nachgebaut.

Sprich:
Tabelle 1 = Hier füge ich aus dem System kopierte Daten ein. Dann bereite ich die über ein Makro auf.
Tabelle 2 = Hier sind die Bezüge und Verweise aus Tabelle 1, die dann alles schön in einer Tabelle entsprechend zuordnen.

Sobald ich die Daten durch z. B. einen neuen Monat austausche in Tabelle 1, entsteht halt diese Bezugmeldung.
Durch Suchen und ersetzen, passe ich die Werte wieder entsprechend auf die richtige Spalte an und alles ist wieder gut

Das Makro rufe ich einfach über so einen Button ab.
Das funktioniert mit anderen Makros auch, daran kann es also nicht liegen würde ich behaupten.


.xlsm   Test2 - Kopie.xlsm (Größe: 120,02 KB / Downloads: 2)
Antworten Top
#6
Hallo,

suche nach #REF!.

Gruß, Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Grimalkin
Antworten Top
#7
Hallo,

in VBA wird Bezug in Englisch verwendet, also "REF!" :

Code:
Sub Fehlerbehebung()
'
' Fehlerbehebung Makro
'

'
    ActiveSheet.Range("D13:AH38").Replace What:="#REF!", Replacement:="G:G", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Sheets("Auswertungsübersicht").Cells.Replace What:="#Bezug!", Replacement:="D8", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub

EDIT1: Bei der ersten Ersetzung nimmst Du bezug auf das aktive Tabellenblatt (ich habe das "ActiveSheet" mal ergänzt, obwohl es zu Deinem Code identisch ist). In der zweiten Ersetzung beziehst Du Dich auf ein bestimmtes Tabellenblatt ("Auswertungsübersicht"). Falls das aktive Blatt auch mal ein anderes sein kann, solltest Du berücksichtigen, dass der Code auf eben dieses Arbeitsblatt angewendet wird.

EDIT2: Ich möchte auch auf den Beitrag von DerHoepp https://www.clever-excel-forum.de/Thread...#pid300930 verweisen. Warum treten denn die Fehler überhaupt auf und sollte man das nicht lieber vermeiden statt "nachzuarbeiten"?
Gruß
Michael
[-] Folgende(r) 2 Nutzer sagen Danke an Der Steuerfuzzi für diesen Beitrag:
  • derHoepp, Grimalkin
Antworten Top
#8
Code:
Sub M_snb()
  on error resume next
  Range("D13:AH38").specialcells(2,16)="snb"
  Range("D13:AH38").specialcells(-4123,16)="snb"
End sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
Hallo snb,

durch Deinen Code wird der Inhalt der gesamten Zelle ersetzt. Ich verstehe den OP so, dass er nur den Fehler innerhalb der Formel durch einen gültigen Bezug ersetzen möchte.
Gruß
Michael
Antworten Top
#10
Wenn der TS behauptet: 'es passiert nichts' dann zeige ich wie man 'errors' in einem Range ändern kann (passiert doch etwas).
Ersetzen von "G:G" verstehe ich nicht.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste