Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA error #Bezug

VBA error #Bezug
14.11.2015 15:31:03
Oliver
Hi. Habe ein Problem und zwar lass ich mir bei Zelle A1 im Excel einen Wert rauslesen von einem Anderen programm (RSLINX)
Darauf hab ich in VBA eine Funktion gemacht das wenn dieser wert in der Zelle A1, 1 ist das dann ein Textbox kommt mit einer Fehlermeldung bei 0 diese wieder verschwindent mit Visible True / FAlse.
Jetzt ist so das mir VBA immer fehlermeldung bringt weil Excel den Wert nicht so schnell rauslesen kann wie VBA ihn beötigt und VBA bringt mir immer fehler das er mit diesem Wert in der Zelle nichst anfangen kann.
Teste ich das von HAND mit 0 und 1 eingeben funktioniert alles also Funktioniert die VBA Funktion mit Textbox nur wenn ich mit dem Wertrauslesen lasse von einem anderen programm und am anfang die ersten paar sekunden dort nur #ref steht kann VBA nichts anfangen und bringt Error.
Wie kann ich das problem umgehen das dies automatisch Funktinoiert mit meinem Rausgelesenen wert vom anderen programm ohne das sich VBA Killt.
Greetz Oli

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA error #Bezug
14.11.2015 16:52:22
Tino
Hallo,
verstehe ich dich richtig?
Dein Programm funktioniert nicht wenn in A1 #Bezug! steht?
Zeig doch mal den Code, vielleicht kann mans umgehen!?
Gruß Tino

AW: VBA error #Bezug
14.11.2015 20:40:44
Oliver
Ich hab mal 2 Files hochgeladen.
Erstes File: Da sieht man das mir VBA Error bringt wenn ich Excel starte und der das Sheet Startet und in der Formular Bar sieht man mein Befehl worüber ich mir mein Wert rauslesen lasse und der dann in der Zelle eingegeben wird. Problem dort zu sehen wie erwähnt das Bevor VBA damit was anfangen kann #N/A oder #ref . Hab auch mit Formeln ummich geschmissen wie 1 oder 0 funktioniert nichts.
Zweites File. Ist dann von VBA die vorgeschriebene Debugging ART und wo der Fehler hängt. Geld hinterlegt das er mit diesem Wert nichts anfangen kann.
Teste ich das von Hand mit 0 und 1 Funktioniert es. Problem ist ich will halt nicht immer jedesmal wenn das Sheet neu geladen wird hier VBA Reset machen müssen damit das geht. Weil es öffnen auch andere leute das Sheet und die haben keine ahnung davon.
Userbild
Userbild
Greetz Oli

Anzeige
AW: VBA error #Bezug
14.11.2015 20:51:11
Tino
Hallo,
versuch es mal so.
Private Sub Worksheet_Change(ByVal Target As Range)
If IsError(Range("W1")) Then
Me.Shapes("BTA Alarm").Visible = False
ElseIf Range("W1") = 0 Then
Me.Shapes("BTA Alarm").Visible = True
Else
Me.Shapes("BTA Alarm").Visible = False
End If
End Sub
Gruß Tino

Anzeige
AW: VBA error #Bezug
14.11.2015 21:03:38
Oliver
Hat Funktioniert. Da der rausgelesene wert ein HARDWARE eingang ist muss ich bis Montag warten ob es Sicher Funktioniert. Weil ich das Kabel nicht einfach so abklemmen kann :D

AW: VBA error #Bezug
14.11.2015 21:04:25
Oliver
Dann ist dieses ISError der Befehl dafür das wenn kein #BEZUG hergestellt werden kann was er dann tun soll.

Anzeige
AW: VBA error #Bezug
14.11.2015 20:57:49
Oliver
Ich hab mal 2 Files hochgeladen.
Erstes File: Da sieht man das mir VBA Error bringt wenn ich Excel starte und der das Sheet Startet und in der Formular Bar sieht man mein Befehl worüber ich mir mein Wert rauslesen lasse und der dann in der Zelle eingegeben wird. Problem dort zu sehen wie erwähnt das Bevor VBA damit was anfangen kann #N/A oder #ref . Hab auch mit Formeln ummich geschmissen wie 1 oder 0 funktioniert nichts.
Zweites File. Ist dann von VBA die vorgeschriebene Debugging ART und wo der Fehler hängt. Geld hinterlegt das er mit diesem Wert nichts anfangen kann.
Teste ich das von Hand mit 0 und 1 Funktioniert es. Problem ist ich will halt nicht immer jedesmal wenn das Sheet neu geladen wird hier VBA Reset machen müssen damit das geht. Weil es öffnen auch andere leute das Sheet und die haben keine ahnung davon.
Userbild
Userbild
Greetz Oli
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Fehler #Bezug in Excel beheben


Schritt-für-Schritt-Anleitung

  1. Überprüfe die Formel in Zelle A1: Stelle sicher, dass die Formel, die den Wert aus dem anderen Programm (z.B. RSLINX) ausliest, korrekt ist. Bei einem #BEZUG! oder #N/A Fehler kann es sein, dass die referenzierte Zelle nicht existiert oder der Wert noch nicht bereit ist.

  2. Nutze die IsError Funktion in VBA: Verwende die IsError Funktion, um zu überprüfen, ob der Wert in der Zelle ein Fehler ist, bevor du ihn weiterverwendest. Beispiel:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If IsError(Range("A1")) Then
            ' Fehlerbehandlung
            MsgBox "Der Wert in A1 ist ein Fehler!"
        Else
            ' Weiterverarbeiten
        End If
    End Sub
  3. Fehlerbehandlung implementieren: Erstelle eine Fehlerbehandlung, die sicherstellt, dass dein VBA-Code nicht abbricht, wenn ein Fehler auftritt. Dies kann durch die Verwendung von On Error Resume Next erreicht werden.

  4. Testlauf: Führe einen Testlauf durch, um sicherzustellen, dass die Fehlerbehandlung funktioniert, auch wenn in der Zelle #BEZUG! steht.


Häufige Fehler und Lösungen

  • #BEZUG! Fehler: Dieser Fehler tritt auf, wenn eine Formel auf eine Zelle verweist, die nicht existiert. Überprüfe, ob die referenzierte Zelle korrekt ist.

  • #N/A Fehler: Wenn der Wert in der Zelle noch nicht verfügbar ist, kann dieser Fehler auftreten. Implementiere eine Verzögerung oder eine Überprüfung vor der Ausführung des Codes.

  • VBA läuft nicht: Wenn dein VBA-Code nicht funktioniert, weil das Workbook nicht vollständig geladen ist, versuche, die Ausführung des Codes zu verzögern, bis Excel bereit ist.


Alternative Methoden

  • Verwende Application.Wait: Du kannst eine kurze Verzögerung einfügen, bevor VBA versucht, den Wert auszulesen:

    Application.Wait (Now + TimeValue("0:00:01")) ' Wartet 1 Sekunde
  • Timer verwenden: Eine andere Möglichkeit ist, einen Timer zu verwenden, der regelmäßig überprüft, ob der Fehler in der Zelle A1 behoben wurde.


Praktische Beispiele

Hier ist ein Beispiel, wie du mit dem #REF! Fehler umgehen kannst:

Private Sub Worksheet_Change(ByVal Target As Range)
    If IsError(Range("A1")) Then
        MsgBox "Die Zelle A1 enthält einen Fehler: " & Range("A1").Text
    Else
        ' Arbeit mit dem gültigen Wert
        Dim wert As Double
        wert = Range("A1").Value
        ' Weitere Verarbeitung...
    End If
End Sub

Diese Methode stellt sicher, dass dein VBA-Code auch bei einem #REF Excel Fehler nicht abstürzt.


Tipps für Profis

  • Verwende Debugging: Nutze die Debugging-Tools in VBA, um Fehler zu identifizieren. Füge Breakpoints ein und analysiere den Code Schritt für Schritt.

  • Optimierung des Codes: Halte deinen Code sauber und gut strukturiert. Vermeide unnötige Berechnungen und verwende Variablen, um den Code lesbarer zu machen.

  • Dokumentation hinzufügen: Kommentiere deinen Code ausführlich, um die Wartbarkeit zu erhöhen, insbesondere wenn du mit anderen Nutzern an Excel-Workbooks arbeitest.


FAQ: Häufige Fragen

1. Was bedeutet der Fehler #BEZUG! in Excel?
Der Fehler #BEZUG! tritt auf, wenn eine Formel auf eine ungültige Zellreferenz verweist. Dies kann passieren, wenn eine Zelle gelöscht wurde oder die Datenquelle nicht verfügbar ist.

2. Wie kann ich einen #N/A Fehler in VBA abfangen?
Du kannst die IsError Funktion verwenden, um zu überprüfen, ob der Wert in einer Zelle ein Fehler ist, bevor du damit weiterarbeitest.

3. Warum funktioniert mein VBA nicht, wenn die Zelle einen Fehler zeigt?
Wenn eine Zelle einen Fehler zeigt, kann VBA mit diesem Wert nicht arbeiten. Du musst sicherstellen, dass du eine Fehlerprüfung implementierst, bevor du den Wert verwendest.

4. Gibt es eine Möglichkeit, den Fehler zu ignorieren?
Ja, die Verwendung von On Error Resume Next erlaubt es deinem Code, auch bei Fehlern fortzufahren, jedoch sollte dies mit Vorsicht verwendet werden, um unerwünschte Auswirkungen zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige