VBA - Mit Makro den Editor öffnen?

2 Antworten

Du kannst mit

Error(ErrorNumber)

eine Fehler generieren, der die Fehlermeldung zeigt und den User mit "Debuggen" automatisch zur Fehlerstelle im Code führt.
Das passiert aber eigentlich auch schon, wenn Du den Fehler einfach nicht abfängst, sonder auflaufen lässt.
Ich finde es auch nicht so sinnvoll jeden an Deinem Code herumschreiben zu lassen.
Kannst Du nicht besser versuchen einen gültigen Dateinamen über eine Input-Box in einer While-Schleife abzufragen?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

Hallo,

im Prinzip hast du recht, ich wollte nur ganz gerne ne Art "Anleitung" für den Anwender einfügen, da ich die Thematik in Zukunft nicht mehr betreuen kann ;)

Es handelt sich dabei um einen Teil meiner Abschlussarbeit, da will ich zumindest in der Theorie die Möglichkeit erarbeiten um zu zeigen, dass ich dran gedacht habe ;)

Da muss ich mir wohl nochmal Gedanken machen, ob das wirklich sinnvoll ist.

Aber trotzdem, gibt es eine Möglichkeit ein bestimmtes Modul im Editor per VBA zu öffnen? Also auch ohne so einen Fehler zu generieren?

Gruß,

Jan

0
@shikser

Mit:
Application.Goto Reference:="Makro1"
oder
Application.Goto Reference:="Tabelle5.MeinCode"
kannst Du ein bestimmtes Modul öffenen, allerdings, soweit ich das weiß, nicht bei einer bestimmten Zeile.

1

Ich hab das jetzt so gemacht, dass ich mir den Dateinamen automatisch auslese und dann verwende:

Arbeitsmappe = ThisWorkbook.Name

Sheets("Bausteinkatalog").Copy After:=Workbooks(Arbeitsmappe).Sheets(1)

Manchmal hilft es auch, vorher nachzudenken :D

1

Du kannst Haltepunkte codegesteuert einfügen.

Versuch mal 

If Dir( <Datei> ) = "" Then _
  Stop

Erstmal vielen Dank für die schnelle Antwort.

Mit dem Befehl komm ich aber nicht in ein bestimmtes Modul, oder?

Gruß,

Jan

0
@shikser

Du könntest versuchen, mit GoTo nach dem Stop ins Modul zu springen oder eine Prozedur des Moduls aufzurufen.

Wenn der Dateiname vom User änderbar sein soll, würde ich allerdings diesen irgendwo im Sheet definieren.

0
@Suboptimierer

Bisher sieht das so aus:

Dim Eingabewert As Byte

'--- nachfolgend unbedingt den Dateinamen anpassen (der Name dieses Dokuments!)
On Error GoTo ErrorFile

Sheets("Bausteinkatalog").Copy After:=Workbooks("Ergebnisse_Bausteinkatalog_Makro.xlsm").Sheets(1)
GoTo ErrorFileNot
ErrorFile:
Eingabewert = MsgBox("Achtung" & vbLf & "Der angegebene Pfad existiert nicht!" & vbLf & vbLf & "Sie müssen eine kleine Änderung im Quelltext vornehmen" & vbLf & vbLf & "Im Editor im Modul 'AA_Öffnen' den Dateinamen anpassen!", vbYesNoCancel, "Information")
If Eingabewert = vbYes Then GoTo Yes
If Eingabewert = vbNo Then GoTo No
Yes:
Application.VBE.MainWindow.Visible = True
No:
Exit Sub
ErrorFileNot:

Wenn der Dateiname also nicht passt, gibt mir Excel eine Meldung aus, dass das nicht geht. Jetzt dachte ich, dass ich über einen Klick auf den Ja-Button den VBA-Editor (genauer gesagt ein bestimmtes Modul darin) öffnen kann. Wie gesagt, in den Editor komm ich so rein, nur nicht in das Modul. Eine Haltestelle im Code brauche ich glaube ich nicht, der Text ist nicht allzu lang.

Falls das da oben nicht die "sauberste" Lösung ist, bitte ich dies zu verzeihen ;)

0
@shikser

Ohne Haltepunkt siehe Oubyi.

Du kannst dir auch versuchen, ein Singleton zu schaffen und beim Auftreten eines Fehlers den Pfad zur Datei am Objekt über eine InputBox anzupassen.

0
@shikser

Du kannst die Existenz der Datei auch programmtechnisch überprüfen. Kein Grund, eine Schutzverletzung auszulösen und abzufangen.
Erfahrungsgemäß sind bei sauberer Programmierung Schutzverletzungen nicht nötig, abzufangen.
Man fängt sie eigentlich nur ab, falls etwas auftritt, was nicht bedacht wurde / werden kann (zum Beispiel weil ein Fehler von außen erzeugt wird, auf den man keinen Einfluss hat).

0