Thema Datum  Von Nutzer Rating
Antwort
12.06.2025 15:41:03 Gast34772
NotSolved
12.06.2025 18:20:09 ralf_b
NotSolved
Rot Objekt-Erzeugung
12.06.2025 22:51:51 Gast33559
NotSolved
12.06.2025 21:20:31 xlKing
NotSolved
12.06.2025 21:27:46 xlKing
NotSolved
12.06.2025 22:58:31 Gast62489
NotSolved
12.06.2025 23:51:53 Gast39034
NotSolved
13.06.2025 01:15:55 Gast18859
NotSolved

Ansicht des Beitrags:
Von:
Gast33559
Datum:
12.06.2025 22:51:51
Views:
19
Rating: Antwort:
  Ja
Thema:
Objekt-Erzeugung

Hi,

danke für die Antworten. Die Struktur dieses Forums ist aber auch etwas seltsam/selten. Man sieht hier nicht den gesamten Verlauf. Oder ist das EInstellungssache?

 

Wie auch immer: Zurück zum Thema. In vielen Punkten gebe ich dir Recht, ralf_b.

Um VBA Programmieren zu lernen, heißt die Objekte und deren Zusammenhänge der jeweiligen Application zu kennen. Wenn du die erstmal wenigstens grundlegend drin hast, dann ist das schon die halbe Miete. Ich glaube nicht, das man VBA mittels einem Buch, das man einmal liest, plötzlich kann. Da es sehr umfangreich ist, lernt man dann nur die Dinge, die man eben gerade braucht. Learning by Doing. 

Aber einige Dinge hast du nicht richtig interpretiert. Ich lerne nicht ausschließlich aus Büchern. Der Grund für die Bücher sind eben unvollständige Informationen usw. Andere Sprachen, von C, bis Java, C#, Python usw. kann man in sehr viel schnellerer Zeit erlernen und Erfolge vorweisen, obwohl sie mächtiger sind, vor allem konsistent. Das alles scheint mir in VBA nicht gegeben zu sein. VBA ist eben sehr interessant, aber irgendwie doch auch katastrophal. Ich kann mich irren, aber es scheint mir kein zu gutes Produkt zu sein, das ggf. zu viele Artefakte aus der Vergangenheit mitschleppt.

Es hilft zwar wenn man Programmierkenntnisse hat aber aber mit meinen(spärlichen) C-Kenntnissen bin ich hier auch nicht viel weitergekommen. 

Vor allem, wie du sagst, kann man Erfahrungen aus anderen Sprachen so gut wie nicht einbringen. Das ist das, was mich irre macht und extrem viel Zeit kostet !!!

Die VBA Referenz  https://learn.microsoft.com/de-de/office/vba/api/overview/  ist eigentlich ok, man muß sie nur lesen können. Das dauert halt auch seine Zeit bis man diese Sprache spicht. 

Richtig: Die ist ok, aber auch nur ok cool. Für manche Themen sogar gut, zumindest über die Zeit besser geworden. Dennoch würde ich VBA nicht als umfangreich bezeichnen. Umfangreich sind Java, C# und Python! Gerade deshalb sind die (aus meiner Sicht) überschaubare Anzahl an Objekten und ihre Beziehungen nicht das Problem. Es ist die Mechanismen, die nicht zu funktionieren scheinen wie in der Literatur beschrieben und das beginnt bereits bei den einfachsten Beispielen (bspw. Objekt-Erzeugung de Built-in Klassen) und der - wie ich es wahrnehme - nicht konsistenten Syntax. Dazu habe ich die Beispiele gepostet.

Was ich mit Objekt-Erzeugung meine:

Laut Literatur sollen Objekte aller Typen einheitlich mit folgender Syntax erzeugt werden können, insbes. sowohl benutzer-definierte Klassen als auch die Built-In Klassen in Office (bspw. Paragraph).

Folgender Code funktioniert:

Sub createObj_1()
   Dim b As BenutzerdefinierteKlasse
   Set b = New BenutzerdefinierteKlasse
End Sub

Folgender Code funktioniert nicht: Und ich habe mittlerweile keine Ahnung, woran das liegen könnte. Er liefert den Kompilierzeit-Fehler: "Unzulässige Verwendung des Schlsselwordts New"

Sub createObj_1()
    Dim b As Paragraph
    Set b = New Paragraph
End Sub

 

Was ich mit Inonsistenz meine: Auch hier am Beispiel der Objekt-Erzeugung

Wenn man ein Objekt in einer andere Sprache explizit/manuell erzeugen kann (bspw. Java), dann erfolgt das an jeder erlaubten Stelle in gleicher Weise und im besten Fall auch syntaktisch identisch.

In Java kann ich ein Objekt auf identische Weise erzeugen

  • innerhalb einer Methode
  • in der Argumentliste einer Methode
  • usw.

In VBA herrscht Chaos:

Folgendes funktioniert:

Sub createObj_1()
  Dim b As BenutzerdefinierteKlasse
  Set b = New BenutzerdefinierteKlasse
End Sub

Folgendes funktioniert wieder nicht:

Sub uebergebenObj(bk BenutzerdefinierteKlasse)
End Sub

Aufrufe:

uebergebenObj New BenutzerdefinierteKlasse
uebergebenObj (New BenutzerdefinierteKlasse)

Beide Aufrufe, aber auch andere Varianten funktionieren nicht.

 

Und wenn ich allein schon an die Unregelmäßigkeiten bzw. unterschiedliches Verhalten bei Prozeduraufrufen denke !!!

  • mit/ohne call
  • Aufruf von Sub vs. Function
  • mit/ohne runde Klammern/Argumentliste ()
  • usw.

Versteht Ihr, was ich meine?


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
12.06.2025 15:41:03 Gast34772
NotSolved
12.06.2025 18:20:09 ralf_b
NotSolved
Rot Objekt-Erzeugung
12.06.2025 22:51:51 Gast33559
NotSolved
12.06.2025 21:20:31 xlKing
NotSolved
12.06.2025 21:27:46 xlKing
NotSolved
12.06.2025 22:58:31 Gast62489
NotSolved
12.06.2025 23:51:53 Gast39034
NotSolved
13.06.2025 01:15:55 Gast18859
NotSolved