Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  Excel VBA: Falsche Adresse bei Range(...) erkennen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Excel VBA: Falsche Adresse bei Range(...) erkennen (935 mal gelesen)
KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 13. Sep. 2013 09:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Leute,
ich bastle mir gerade ein Excel-Makro. Darin soll zu beginn aus einer bestimmten Zelle ein Wert ausgelesen werden.
Diese Zelle kann in verschiedenen Tabellen an unterschiedlichen Stellen sein, drum funktioniert Range("A1") etc. nicht.
Ich verwende deshalb einen Zellennamen, z.b. "Filepath" und lese den mit
Filepath = Range("Filepath").value
aus. Das funktioniert problemlos- wenn dieser Zellname existiert.
Wenn der Name in der Tabelle aber nicht existiert, dann bricht das Makro kommentarlos ab. Wie kann ich das abfangen? Alle Versuche mit On Error... sind wirkungslos.
Gibts in VBA sowas wie Try..catch...End Try?

------------------
Klaus

www.al-ko.com | mein Gästebuch

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jörg_B
Mitglied
Staatlich geprüfter Techniker Maschinenbau


Sehen Sie sich das Profil von Jörg_B an!   Senden Sie eine Private Message an Jörg_B  Schreiben Sie einen Gästebucheintrag für Jörg_B

Beiträge: 96
Registriert: 24.03.2003

Beruf<P>Solid Works 2011 SP 5<P>Windows 7
Intel Q6600, 3GB Ram
FX 1500 / 6.14.10.9163<P>Privat
Alibre 11 Standard
HP dv 9700
AMD Turion 64 X2, 2GB Ram
NVIDIA GForce 8400M GS

erstellt am: 13. Sep. 2013 10:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Such mal nach

If Filepath Is Nothing

------------------
Gruß vom Oberrhein

Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 13. Sep. 2013 11:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das klappt leider nicht.
"Typen unverträglich"
Filepath ist ein String, der kann nicht Nothing sein
War vielleicht etwas ungeschickt, dass ich die Variable im Beispiel genauso genannt habe, wie die Zelladresse.

Variablenname Filepath durch Modelpath ersetzt:

Code:
    '...
    Dim Modelpath as String
    ModelPath = ""
    ModelPath = Range("Filepath").Value
    '....
------------------
Klaus

www.al-ko.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 13. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pablo
Mitglied
Techniker


Sehen Sie sich das Profil von pablo an!   Senden Sie eine Private Message an pablo  Schreiben Sie einen Gästebucheintrag für pablo

Beiträge: 453
Registriert: 23.01.2002

Win10
Office 365
SE 2020

erstellt am: 13. Sep. 2013 17:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Klaus,

einfach geht es mit einer eigenen Funktion,

Public Function GetFilePath(sPath As String, sVal As String) As Boolean

  On Error GoTo ErrorHandler

  sVal = Range(sPath)

GetFilePath = True
Exit Function
ErrorHandler:
  Err.Clear
End Function

die du im eigentlichen Code aufrufst:

  If GetFilePath(sPath, sVal) Then
  ...
  end if

pablo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Ehrenmitglied V.I.P. h.c.
Arbeiter ツ



Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

what i think?
I think, no skill

erstellt am: 13. Sep. 2013 19:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Normalerweise muss es immer einen Fehlermeldung geben, diese kann man ja dann gezielt behandeln.

Code:
Sub abfrage()
  On Error GoTo ErrorHandler
   
    If Range("Filepath").Value = "" Then
            Err = 1
            GoTo ErrorHandler
        Else
            ModelPath = Range("Filepath").Value
    End If

ErrorHandler:
Select Case Err
    Case 1
        MsgBox ("Fehlernummer " & Err & " = Zelle ist Leer" & vbLf & vbLf & "da sollte schon was drinnen stehen^^")
    Case 1004
        MsgBox ("Fehlernummer " & Err & " = Anwendungs- oder objektdefinierter Fehler" & vbLf & vbLf & "Zellbenennung existiert nicht?")
    Case Else
        MsgBox ("Fehlernummer " & Err & vbLf & Err.Description & vbLf & "Quelle: " & Err.Source & vbLf & vbLf & "Hilfe: " & Err.HelpFile)
        Shell "hh.exe " & Err.HelpFile
End Select

End Sub


[Diese Nachricht wurde von Thomas Harmening am 13. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 16. Sep. 2013 08:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ischwrrnochverrückt!

Am Freitag hat mich das Ding wahnsinnig gemacht, sämtliche Versuche, diesen (und andere) Fehler abzufangen einfach ignoriert...heute läuft wieder alles so, wie es soll, damit wäre dieser gesamte Thread überflüssig gewesen.
Was das wieder war? Da ist mir bestimmt wieder so ein Neutrino aus dem Weltraum durch das entsprechende Bit im RAM geschossen^^

@pablo: Danke für den Tipp, aber das trifft das (nicht mehr existierende) Problem nicht:
Ich wollte nicht aus irgendeinem String den Pfad extrahieren, das kann ich schon  
Mein Problem war, dass das Makro abgeschmiert ist, wenn ich irgendeinen String (Filepath ist nur ein Name) aus einem nicht existierenden Range der Excel Tabelle auslesen wollte.
Aber jetzt geht's ja  

Vielen Dank an alle, die sich die Mühe gemacht haben und sich darüber den Kopf zerbrochen haben  

------------------
Klaus

www.al-ko.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 16. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pablo
Mitglied
Techniker


Sehen Sie sich das Profil von pablo an!   Senden Sie eine Private Message an pablo  Schreiben Sie einen Gästebucheintrag für pablo

Beiträge: 453
Registriert: 23.01.2002

Win10
Office 365
SE 2020

erstellt am: 16. Sep. 2013 18:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Klaus,

die eigene Prozedur simuliert Try..catch...End Try.

Falls das Makro komplett abschmiert kannst du mit:

  For Each TempName In Names
    If TempName.Name = SearchName Then
      NamedCellExists = True
      Exit For
    End If
  Next

überprüfen ob die gesuchte Zelle vorhanden ist.

pablo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz