Von VBA zu C#: Erste Anwendung und Variablen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Wer von VBA zu C# wechselt, muss an einigen Stellen umdenken. Der Sprung von VBA zu Visual Basic unter .NET wäre möglicherweise etwas einfacher, allerdings ist C# wohl die weiter verbreitete Sprache. Das bedeutet nicht nur, dass es mehr Entwickler gibt, die damit entwickelte Anwendungen leichter weiterentwickeln oder Sie unterstützen können, sondern es existieren auch mehr Beispiele zu C# im Internet als zu Visual Basic. Im ersten Artikel der Kategorie “Von VBA zu C#” schauen wir uns an, wie Sie eine erste kleine Konsolenanwendung bauen und welche einfachen Datentypen es dort gibt.

Für die Beispiele dieser Artikelreihe wollen wir jeweils eine Konsolenanwendung verwenden. Damit können wir uns auf die Sprache selbst konzentrieren und müssen uns nicht mit zusätzlichen Elementen wie etwa der Benutzeroberfläche beschäftigen. Eine Konsolenanwendung erstellen Sie über den Menübefehl Datei|Neu|Projekt. Dies zeigt den Dialog Neues Projekt an, wo Sie das Zielverzeichnis und den Namen des Projekts angeben sowie die Projektvorlage auswählen – in diesem Fall Vorlagen|Visual C#|Windows-Desktop|Konsolenanwendung.

Ein Klick auf die Schaltfläche OK legt dann ein neues Projekt an, das im Wesentlichen aus einem Klassenmodul namens Program.cs besteht. Klassenmodule sind Ihnen, wenn Sie bereits mit VBA programmiert haben, ein Begriff – dort gab es die zu Formularen oder Berichten gehörenden Klassenmodule oder alleinstehende Klassenmodule, die Sie ähnlich wie Standardmodule angelegt haben.

Unter VBA war der wesentliche Unterschied zwischen Klassenmodulen und Standardmodulen, dass Sie zunächst ein Objekt auf Basis des Klassenmoduls erstellen mussten, um auf die enthaltenen Elemente wie etwa Methoden oder Eigenschaften zuzugreifen, während Sie die in Standardmodulen enthaltenen Prozeduren oder Funktionen direkt etwa über den Direktbereich des VBA-Editors aufrufen konnten.

Von der Idee der Standardmodule können Sie sich nun verabschieden, denn unter C# gibt es nur noch Klassenmodule. In unserem neuen Projekt heißt das aktuell einzige Exemplar Program.cs und sieht wie in Bild 1 aus. Was es mit den using-Anweisungen und den Elementen namespace, class und static void auf sich hat, schauen wir uns weiter unten an.

Standardmäßig vorhandenes Klassenmodul in einem neuen C#-Projekt

Bild 1: Standardmäßig vorhandenes Klassenmodul in einem neuen C#-Projekt

Erster Test

Die Konsolenanwendung heißt so, weil die Ausgabe in der Konsole erfolgt, also in einem Fenster wie der Eingabeaufforderung. Um dort einen Text auszugeben und das Fenster durch Betätigen der Eingabetaste wieder zu schließen, ergänzen Sie die Prozedur, die mit der Zeile static void Main… beginnt, durch zwei Zeilen, die Sie wie folgt zwischen den geschweiften Klammern einfügen:

static void Main(string[] args)
{
     Console.WriteLine("Eingabetaste drücken!");
     Console.ReadLine();
}

Ein Klick auf die Taste F5 oder die Auswahl des Menüeintrags Debuggen|Debugging starten sorgt für die Anzeige des Fensters aus Bild 2, das Sie durch Betätigen der Eingabetaste wieder schließen.

Anzeige der Konsole mit dem gewünschten Text

Bild 2: Anzeige der Konsole mit dem gewünschten Text

Der erste Befehl, die Methode WriteLine des Objekts Console, hat also zunächst für die Anzeige des Textes in der Konsole gesorgt. Damit die Konsole danach nicht direkt wieder verschwindet, haben wir die ReadLine-Methode des Console-Objekts hinterhergeschickt. Diese unterbricht den Ablauf des Programms, bis der Benutzer die Eingabetaste betätigt.

Alternativ zu ReadLine hätten wir auch die Methode ReadKey nutzen können, die auf die Betätigung einer jeden Taste reagiert:

Console.ReadKey();

Semikolon als Zeilenabschluss

Sie haben es schon erkannt: Unter C# müssen Sie jede Anweisung mit einem Semikolon beenden. Es reicht nicht aus, wie unter VBA einfach die neue Anweisung in die nächste Zeile zu schreiben. Hier ist das Semikolon das Maß aller Dinge bei der Kennzeichnung des Endes einer Anweisung. Dafür können Sie unter C# auch mehrere Anweisungen in eine Zeile schreiben – Sie müssen diese nur durch das Semikolon voneinander trennen.

Dies sähe dann für unser Beispiel so aus:

Console.WriteLine("Eingabe...!");Console.ReadLine();

Zeilen umbrechen

Durch den zwingenden Zeilenabschluss per Semikolon können Sie Zeile im Gegensatz zu VBA etwas komfortabler aufteilen – zum Beispiel so:

Console.WriteLine(
     "Eingabetaste drücken!");

Sie müssen also nicht etwa das Unterstrich-Zeichen angeben, um den Zeilenumbruch zu markieren. Leider gelingt das nicht mitten in einem Literal, also innerhalb von Anführungszeichen. Folgendes führt zu einem Kompilierfehler, der übrigens rot unterstrichen markiert wird:

Console.WriteLine("Eingabetaste 
     drücken!");

Außerdem können Sie sich bei dieser Gelegenheit gleich mit der Fehlerliste von Visual Studio bekanntmachen, die Sie sicher noch häufiger konsultieren werden – und zwar mit dem Menüeintrag Ansicht|Fehlerliste oder der Tastenkombination Strg + ^, E (also erst Strg + ^, dann E).

Ungewohnte Klammern

Nicht nur, dass Sie sich mit geschweiften Klammern herumschlagen müssen, die einen Codeblock beispielsweise innerhalb eines Namespaces, einer Methode oder auch eines Konstrukts wie einer Schleife oder einer Bedingung markieren – C# verlangt auch nach allen möglichen Methoden nach der Angabe eines Klammernpaares. Dies geschieht unabhängig davon, ob Parameter zu übergeben sind oder nicht. Sollten Ihnen also einmal ein Syntaxfehler über den Weg laufen, den Sie sich auf den ersten Blick nicht erklären können, prüfen Sie, ob die Anweisung eventuell nach einem Paar abschließender Klammern verlangt.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar