Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: bungev am Februar 24, 2017, 07:26:56

Titel: VBA-Code richtig darstellen
Beitrag von: bungev am Februar 24, 2017, 07:26:56
Hallo zusammen,

ich habe mal eine kurze Frage: Habe mir jetzt in den letzten Wochen mal eine Datenbank gebastelt, mit der ich meine ganzen Sub 's und Funktionen verwalten kann. Da kommt ja im Laufe der Zeit so einiges zusammen.

Bei dieser Datenbank habe ich auch versucht, den VBA-Code durch automatisches Einrücken und Leerzeilenbildung übersichtlicher hinzubekommen. Dass ist mir jetzt auch gelungen.

Nun zu meiner Frage: Gibt es eine Möglichkeit, dass man den aktuellen VBA-Code über meine Funktion in die neue Darstellung ändern kann?

Wer schon einmal mit Visual Basic Enterprise (oder ähnlichen) gearbeitet hat, der kennt ja den Editor. Dieser rückt ja schon bei der Eingabe die Zeile entsprechend ein. Da dies ja bei Access nicht geht, suche ich halt eine Möglichkeit, dass zumindestens beim Abspeichern des Codes dieser richtig eingerückt abgespeichert wird.

Vielleicht gibt es ja auch eine Möglichkeit, dass das aktuelle Modul per Tastendruck/-kombination meine Funktion aufruft und somit die Formatierung übernimmt.

Wäre schön, wenn Ihr mir helfen könntet.

Gruß

Volker
Titel: Re: VBA-Code richtig darstellen
Beitrag von: Lachtaube am Februar 24, 2017, 09:02:10
Theoretisch kannst Du, wenn ein Formular oder Bericht die Eigenschaft HasModule gesetzt hat, über das Objekt Module des Formulars/Berichts/Module, bzw. über ein Item der Modules-Auflistung  den VBA-Code des Moduls über diverse Eigenschaften und Methoden (siehe Snapshot des Objektkatalogs im Anhang ) ansprechen und ändern.

Andererseits gibt es aber auch kostenlose VBA-Addins mit der gleichen Funktionalität, denen ich persönlich den Vorzug geben würde. Mir fällt dazu Smart Indenter v3.5 (http://www.oaltd.co.uk/Indenter/Default.htm) bzw. Rubberduck (http://rubberduckvba.com/), das den selben Code wie Smart Indenter für Einrückungen verwendet, ein.
Titel: Re: VBA-Code richtig darstellen
Beitrag von: PhilS am Februar 24, 2017, 09:40:31
Zitat von: bungev am Februar 24, 2017, 07:26:56Vielleicht gibt es ja auch eine Möglichkeit, dass das aktuelle Modul per Tastendruck/-kombination meine Funktion aufruft und somit die Formatierung übernimmt.
Neben den von Lachtaube bereits genannten Add-Ins kann ich dir auch noch die MZ-Tools (https://mztools.com) empfehlen. - Nicht kostenlos, aber definitiv ihr Geld mehr als Wert.

Deine Frage passt übrigens genau zu meinen aktuellen Video Tools für die Codeformatierung (https://youtu.be/tS16NOkEPgI).
Titel: Re: VBA-Code richtig darstellen
Beitrag von: Lachtaube am Februar 24, 2017, 09:48:55
@Sonic8,

ich würde die Güte eines VBA-Indenters u. a. auch an der Fähigkeit messen (der Smart Indenter scheitert hieran), Ausdrücke wie   Dim i&, j&

   For i = 0 To 9: For j = 0 To 9
      'mach was
   Next j, i
richtig einzurücken.
Titel: Re: VBA-Code richtig darstellen
Beitrag von: PhilS am Februar 24, 2017, 10:56:10
Zitat von: Lachtaube am Februar 24, 2017, 09:48:55...Ausdrücke wie   Dim i&, j&

   For i = 0 To 9: For j = 0 To 9
      'mach was
   Next j, i
richtig einzurücken.
Oha! Das ist das absolut erste mal, dass ich eine derartige Formulierung verschachtelter Schleifen sehe.

Das Indent-Feature von MZTools kann damit umgehen. Dennoch würde ich diesen Fall nicht als relevantes Kriterium betrachten.

Ich finde diese Schreibweise nicht gut lesbar und potentiell sehr fehlerträchtig. Intuitiv hätte ich die Reihenfolge von j und i hinter dem Next umgedreht. - Ich habe deinen Code ausführen müssen, um mich davon zu überzeugen, dass es wirklich so herum richtig ist. - Mit etwas nachdenken, ist natürlich klar warum es so richtig ist. - Das Fehlerpotenzial bleibt IMO trotzdem hoch.

Wenn ich das obige in meinen Projekten sehen würde, würde ich einen Code-Quality-Check definieren, der diese Formulierung an sich als Qualitätsmangel beanstandet. - Damit wäre die korrekte Einrückung nicht mehr wirklich relevant.

Aber Danke und Hut ab für das Beispiel! Es kommt nicht mehr oft vor, dass ich VBA-Syntax sehe, die ich noch gar nicht kannte!
Titel: Re: VBA-Code richtig darstellen
Beitrag von: Lachtaube am Februar 24, 2017, 11:29:54
Ich formuliere meinen Code i.d.R so auch nicht - bei sich wiederholenden Einzeilern (wenn bekannt ist, um was es geht) kommt schon einmal eine Ausnahme vor.
Titel: Re: VBA-Code richtig darstellen
Beitrag von: Beaker s.a. am Februar 24, 2017, 13:18:21
Hallo Volker,
ZitatDieser rückt ja schon bei der Eingabe die Zeile entsprechend ein. Da dies ja bei Access nicht geht
Doch, dass kann der VBA-Editor auch (siehe Anlage)
gruss ekkehard
Titel: Re: VBA-Code richtig darstellen
Beitrag von: PhilS am Februar 24, 2017, 14:17:53
Zitat von: Beaker s.a. am Februar 24, 2017, 13:18:21
ZitatDieser rückt ja schon bei der Eingabe die Zeile entsprechend ein. Da dies ja bei Access nicht geht
Doch, dass kann der VBA-Editor auch (siehe Anlage)
Du hast lange nicht mit aktuellen Versionen von Visual Studio gearbeitet.

Der dortige Editor formatiert automatisch so, wie es in VBA von den hier genannten Zusatztools auf Tastendruck gemacht wird.

Der VBA-Editor behält lediglich den manuell erzeugten Einzug bei. - Das Automatisch in der Bezeichnung der entsprechenden Editor-Einstellung finde ich etwas hochtrabend, aber der VBA-Editor ist ja inzwischen schon etwas in die Jahre gekommen.
Titel: Re: VBA-Code richtig darstellen
Beitrag von: Beaker s.a. am Februar 24, 2017, 19:21:29
Hallo Phil,
ZitatDu hast lange nicht mit aktuellen Versionen von Visual Studio gearbeitet.
Öh, noch nie; - muss ich mich jetzt schämen?  ;)
ZitatDer VBA-Editor behält lediglich den manuell erzeugten Einzug bei.
Ja, stimmt. Zu spät verstanden, was eigentlich gemeint ist.

gruss ekkehard
Titel: Re: VBA-Code richtig darstellen
Beitrag von: bungev am März 02, 2017, 08:19:04
Hallo zusammen,

erst einmal vielen Dank für die reichlichen Antworten und sorry, dass ich mich erst jetzt zurück melde.

Die genannten AddIns habe ich mir zwar noch nicht angesehen, aber was mir aufgefallen ist, das zumindestens Smart Indenter keine Lücken zwischen den einzelnen Zeilen macht (zumindestens bei If, For, Select Case usw. Anweisungen).

Daher würde ich gerne mein eigenes AddIn schreiben.

Jetzt besteht ja "eigentlich nur noch" das Problem, wie kann ich meine Funktion von überall her aufrufen und auf das gerade aktuelle Modul anwenden?

Die Anmerkung von Lachtaube "Theoretisch kannst Du, wenn ein Formular oder Bericht die Eigenschaft HasModule gesetzt hat, über das Objekt Module des Formulars/Berichts/Module, bzw. über ein Item der Modules-Auflistung  den VBA-Code des Moduls über diverse Eigenschaften und Methoden (siehe Snapshot des Objektkatalogs im Anhang ) ansprechen und ändern." hört sich ja schon einmal recht vielversprechend an.

Wäre schön, wenn jemand mir bei meinem Problem helfen könnte.

Vielen Dank

Volker
Titel: Re: VBA-Code richtig darstellen
Beitrag von: Josef P. am März 02, 2017, 09:44:33
Hallo!

Wenn du selbst ein Add-In erstellen willst, hast du die Wahl zw. einem Access-Add-In und einem COM-Add-In für den VBA-Editor.
Ein Access-Add-In (ich meine damit die accda/mda-Dateien) kannst du mit Access erstellen. Du musst sie aber starten, um sie verwenden zu können.
Ein COM-Add-In kann automatisch geladen werden und steht dann z. B. über einen Menüeintrag, als Kontextmenü oder interaktiv zur Verfügung.

Falls du ein ähnliches Verhalten wie im Visual-Studio haben willst, wäre vielleicht vbeTwister (http://www.vbetwister.com/) etwas für dich.

mfg
Josef