Einstieg in VBA

  • Excel

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von mumpel.

    Einstieg in VBA

    Hey,

    als ich mich letztens im Internet nach einem Nebenjob als Werkstudent umgeschaut habe, ist mir aufgefallen, dass vor allem im Büro- und Verwaltungsbereich immer Excel- und oft VBA-Kenntnisse vorrausgesetzt sind.
    Aus diesem Grund denke Ich, dass es heutzutaage wichtig ist, sich auch mit VBA auseinanderzusetzen.

    Ich habe davor schon viel und ausführlich mit C#, C++ und XNA gearbeitet (mit Visual Studio 2013), also bin ich kein kompletter Anfänger, was es wahrscheinlich um einiges leichter macht.

    Im Internet bin ich auf viele Unterschiedliche Tutorials und Bücher gestoßen und ich weiß momentan nicht so ganz genau, was genau ich eigentlich lernen soll, wenn ich nicht gerade als IT-Profi in einer Firma arbeite.

    Deswegen wende Ich mich mit meinen Fragen an euch:
    • Welche Version von VBA soll ich lernen (2010, 2013) oder unterscheiden die sich nur Minimal?
    • (Weil Ich gesehen habe, dass es VBA-Tutorials für Office oder für Applikationen gibt) Womit soll Ich anfangen oder ist VBA allgemein auf alles gleich/ähnlich anwendbar?
    • Gibt es irgendwelche Bücher oder Online-Tutorials, die Ihr empfehlen könnt?

    Vielen Dank für eure Hilfe! :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DaJa“ ()

    Dafür dass du schon mit C# umgehen kannst, bringst du hier aber einiges durcheinander.

    Ich denke viele Firmen wünschen sich den guten Umgang mit Excel und passend dazu VBA (VORSICHT: VBA != VB.net/vb6)...VBA ist die Scriptsprache mit der Excel Macros programmiert werden, was wirklich viele Arbeitsschritte automatisieren kann in einigen Firmen.

    Desweiteren gibt es Excel-Addins, welche du mit VB.net oder C# programmieren kannst, damit kannst du z.B. in Excel einen neuen Tab programmieren in dem du Daten eingeben kannst etc...

    Allerdings denke ich, dass du hier in diesem Fall VBA meinst.
    Dafür musst du in Excel die Entwickleroptionen einschalten und dort mit dem eingebauten Editor arbeiten.

    Für alles andere steht dir google FAQ
    Hallo DaJa,

    wie shaebich schon gesagt hatte meinten die sicher VBA. Jedoch muss ich hier noch einen Zusatz hinzufügen. Viele große Programmhersteller, bieten in Ihrer Software eine Makro Schnittstelle an. Das ist in dem Fall VBA. Hier hat der User, der lust hat komplexe Vorgänge zu Automatisieren. D.h in dem Fall für Excel hast du direkt zugriff auf diverse Schnittstellen. Ich habe mir damals das Buch VBA-Programmierung von Franzis geholt, hier hast du einen guten Einblick und kannst schonmal etwas üben.

    Ansonsten hat Excel sicherlich auch eine Hilfedatei in der du nachschauen kannst.

    Hier noch die ISBN: 978-3-7723-7589-7

    aber schau das du die aktuellste auflage bekommst meine ist schon etwas älter.

    Ansosten kann ich dir für VB.net nur die Bücher von Michael Kofler empfehlen. sind zwar etwas Trocken, aber so sind nur mal Bildungsbücher. Aber du hast viele Programmierbsp. und einige Lösungen dabei.

    Viel Spaß beim Lernen!
    Ja, ich hab mich ein bisschen vertan ;)
    Habe natürlich VBA gemeint!

    Danke für den Buchvorschlag! Werd's mir mal anschauen...
    Aber es sollte, denke ich, nicht viel ausmachen, ob das VBA Buch jetzt für Excel 2007 oder 2013 ist.

    Vielen Dank für die raschen Antworten! :thumbsup:

    DaJa schrieb:

    Ja, ich hab mich ein bisschen vertan ;)
    Habe natürlich VBA gemeint!

    Danke für den Buchvorschlag! Werd's mir mal anschauen...
    Aber es sollte, denke ich, nicht viel ausmachen, ob das VBA Buch jetzt für Excel 2007 oder 2013 ist.

    Vielen Dank für die raschen Antworten! :thumbsup:


    Dann würde ich mich an deiner Stelle eher an die neue Version halten ;)
    Wobei es imo relativ wenig neues zu lernen gibt, wenn man vb.net beherscht, und dann in vba einsteigt.
    Auch in vba ist der Objektkatalog die wichtigste Doku, wo man alles nachschlagen kann, was man braucht.
    Und vba hat noch das tolle Feature des Makro-Rekorders, mit dem man kleine Bearbeitungs-Abläufe aufnehmen kann, und anschließend hat man schon mal eine Methode, in der die wesentlichen Befehle auftauchen.
    Die ist (vom Rekorder) zwar immer absolut obergrauenhaft gecodet, und also sinnvoll zu überarbeiten, aber so findet man immer recht leicht einen Ansatz.

    Also so wars zumindest früher, ich trau Microsoft locker zu, dass sie inzwischen den Makro-Recorder abgeschafft haben, weil für dumme Ideen sind die ja immer zu haben ;) .

    also vba ist quasi eine (recht kleine) Teilmenge von vb.net.
    Naja, und wenn du c# kannst, dann kannst du ja auch vb.net, das sind ja nur oberflächliche Unterschiede.

    Bleibt halt die Frage, wie gut du c# beherschst - zB kannst du dort mit dem ObjectBrowser umgehen?

    ErfinderDesRades schrieb:


    also vba ist quasi eine (recht kleine) Teilmenge von vb.net.
    Naja, und wenn du c# kannst, dann kannst du ja auch vb.net, das sind ja nur oberflächliche Unterschiede.

    Bleibt halt die Frage, wie gut du c# beherschst - zB kannst du dort mit dem ObjectBrowser umgehen?

    Naja C# beherrsche ich leider nicht ganz so extrem gut; Also ich habe mich mal damit beschäftigt....
    Ein paar kleine Anwendungen und Spiele geschrieben. Das gleiche gilt für C++.
    Sehr gut beherrsche ich leider nur XNA.

    Ich habe aber gelesen, dass VBA ziemlich einfach zu lernen ist, vor allem, wenn man schon Erfahrung mit Programmieren und somit die ganzen Grundkenntnisse hat.

    DaJa schrieb:

    Ich habe aber gelesen, dass VBA ziemlich einfach zu lernen ist, vor allem, wenn man schon Erfahrung mit Programmieren und somit die ganzen Grundkenntnisse hat.


    Bei VBA hast du sogar den Vorteil des Makro Recorders von Excel...damit kannst du die meisten dinge einfach schnell aufnehmen und dann den Code bearbeiten :D...zumindest kleine einfach dinge

    DaJa schrieb:

    Ich habe aber gelesen, dass VBA ziemlich einfach zu lernen ist
    Der "Grundwortschatz" ist relativ einfach (mit Betonung auf relativ).
    Für jemand, der verschiedene Sprachen beherrscht, ist das einfach eine neue Syntax.

    Die Basic-Dialekte sind von der Syntax alle ähnlich, sei es VB6, VBScript, VB.Net oder VBA.
    Was aber unterschiedlich ist, ist die Integration.
    VB.Net hat das komplette .Net-Framework. Das ist unheimlich mächtig und fehlt bei den anderen.
    VB6 hat nur WinForms und ist der Vorgänger von VB.Net.
    VBScript ist eine interpretierte Sprache und für nicht zu komplexe Anwendungen, meist Admin-Aufgaben wo du kein GUI benötigst.

    VBA hat die Sprachelemente von VBScript, aber du hast das komplette Objektmodell der jeweiligen Anwendung (Excel, Word, Outlook...) dahinter.
    Die eigentliche Herausforderung besteht also nicht in der Sprache, sondern in der Anwendung des jeweiligen Objektmodells.

    Ich kenne VB.Net-Programmierer, die sich unheimlich schwer tun in VBA, weil sie das Objektmodell nicht kennen.
    Und ich kenne VBA- und VB6-Programmierer, die sich ebenso schwer tun mit VB.Net, weil sie das Framework nicht zu beherrschen vermögen.

    shaebich schrieb:

    Bei VBA hast du sogar den Vorteil des Makro Recorders von Excel
    Das ist Segen und Fluch zugleich.
    Der Macrorecorder ist eine große Hilfe, wenn es darum geht, die richtigen Objekte und deren Methoden zu finden.
    Aber der Code, den er produziert, ist furchtbar ineffizient und sollte auf keinen Fall 1:1 übernommen werden.
    Faustregel: Alles was "Active" oder "Select" beinhaltet durch Direktadressierung ersetzen
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    stimme dir ganz zu.
    Die Crux ist eben, dass man objektorientiert programmieren kann, und weiß, wie man das im Kontext verfügbare ObjektModell sich verfügbar macht.
    Wobei von vba auf vb.net ist immer schwer, denn es ist eine Erweiterung (zB Klassen, Vererbung können nun auch selbst definiert werden).
    Während andersrum ists nur eine Einschränkung (zB man kann die gegebenen Klassen nicht mehr durch Vererbung modifizieren).

    Also wer in vb.net/c# sich das Objektmodell nie im Objectbrowser anguckt, der wird in vba natürlich ebenso planlos rumstümpern.

    und der Recorder ist halt genau dann ein Fluch, wenn man stümpert und den grauenhaften Recorder-Code unkorrigiert belässt. Aber als Stichwort-Lieferant und Hinweis-Geber, welche Klassen für welche Anforderung von Interesse sind, ists halt ein Segen, und auch ein Alleinstellungsmerkmal gegenüber anderen Sprachen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    VBA ist im Grunde definitiv nicht schwer zu erlernen und es gibt zig Quellen im Internet.

    Es ist relativ mächtig und VB5/6 sehr ähnlich.
    Du kannst COM Objekte verwenden, auf WINAPI's zugreifen und eigene Klassen erstellen.
    Wenn du OOP lernen willst, würde ich dir aber nicht VBA empfehlen.

    In der Praxis sind VBA Anwendungen (insbesondere ACCESS) oft sehr umfangreich und komplex, aber leider hässlich.

    Ansonsten ist es fast egal, welche Office Version (ab 2003) du verwendest. Wenn du eine kannst, kannst du alle ;)

    Der Makrorekorder ist nett zum rausfinden der Properties von Excel und Word Objekten, aber wie bereits erwähnt nur ein Hilfsmittel.
    In Access steht er zB auch leider nicht zur Verfügung. Ich würde dir dennoch empfehlen mit ACCESS zu arbeiten, da hier auch eine Datenbank gleich dabei ist und du mehr als "nur" Makro's erlernst, sondern dich auch gleich mit Datenmodellierung beschäftigen darfst ;)
    Das ist meine Signatur und sie wird wunderbar sein!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mono“ ()

    Hallo!

    shaebich schrieb:


    (...) damit kannst du z.B. in Excel einen neuen Tab programmieren in dem du Daten eingeben kannst etc... (...)

    Das kann man auch ohne externe Programmierwerkzeuge. Dann sogar Dateigebunden. Siehe Link in meiner Signatur.

    Gruß, René