Office: Frage zu Besonderheit in VBA

Helfe beim Thema Frage zu Besonderheit in VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen! Oft finde ich Formulierungen die aus meiner Sicht das Gleiche meinen aber dennoch beide unterscheidlich genutzt werden. If... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von andysmith, 8. Januar 2012.

  1. andysmith Erfahrener User

    Frage zu Besonderheit in VBA


    Hallo zusammen!

    Oft finde ich Formulierungen die aus meiner Sicht das Gleiche meinen aber dennoch beide unterscheidlich genutzt werden.

    If Left$(strPath, 2) = "\\" Then
    If Left(strPath, 2) = "\\" Then

    Kennt jemand den Hintergrund der $ Formulierung? Wo liegt der Unterschied?
     
    andysmith, 8. Januar 2012
    #1
  2. miriki Erfahrener User
    Genau genommen könnte man nach einem Hintergrund der "nicht-$" Version fragen... ;-)

    Wer relativ früh mit Basic angefangen hat, vielleicht noch BasicA oder GwBasic (zu DOS-Zeiten) benutzt hat, der wird wissen, daß es damals nur die $-Version dieser Funktionen gab.

    Damals gab's das DIM aber eigentlich auch nur für Array-Variablen. Ein "option explicit" und ein "dim"-Zwang für jede einzelne Variable gab's da noch nicht (wenn ich mich nicht irre, bin mir aber wenigstens noch zu 80, 90 % sicher). Heute kann man
    Code:
    DIM Zeichen as String
    oder auch
    DIM Zeichen$
    benutzen, um später im Code dann
    Code:
    Zeichen$ = "abc"
    oder auch
    Zeichen = "abc"
    zu benutzen.

    Damals hätte die 2. Variante zu einem Fehler geführt, weil Zeichenketten nur auf Variablen zugewiesen werden durften, die mit einm $ beendet wurden. Und entsprechend hatten die Funktionen (Left$, Right$, Mid$, Str$, ...) alle ein $ am Ende, um kenntlich zu machen, daß der Rückgabewert eine Zeichenkette ist.

    Heute ist das ganze etwas lascher geworden. Solange man im DIM bereits sagt, daß es ein String ist, kann man später das Typkennzeichen (wie bei allen anderen Variablen, z.B. das & für Longint, auch) weg lassen. Entsprechend kann man das $ auch bei den Funktionen weg lassen. Nur konsequent, aber deswegen noch lange nicht schön... Ich schreibe das $ bei diesen Funktionen lieber weiterhin mit. Ich müßte aber, zugegebenermaßen, daß $ auch bei den Variablen anhängen, was ich (leider?) nicht mehr konsequent tue.

    Gruß, Michael
     
    miriki, 9. Januar 2012
    #2
  3. Beverly
    Beverly Erfahrener User
    Hi Michael,

    die Verwendung von $ am Ende des Variablennamen ist eine veraltete Schreibweise aus BASIC-Zeiten und bezeichnet den Variablentyp. Heutzutage verwendet man stattdessen Variablenbezeichnungen mit einem Präfix, wobei dieser Präfix den Variablentyp bezeichnet (z.B. Dim strZeichen as String). Eine direkte internationale Festlegung der zu verwendenden Abkürzungen gibt es nicht, allerdings ist als Grundlage für die Abkürzungen (in VBA) allgemein die "Ungarische Notation" anerkannt. Unter dem folgenden Link findest du dazu einige Ausführungen: http://www.it-academy.cc/article/995/Ungarische+Notation+fuer+Visual+Basic.html

    Bis später,
    Karin
     
    Beverly, 9. Januar 2012
    #3
  4. miriki Erfahrener User

    Frage zu Besonderheit in VBA

    Schrieb ich nicht fast genau das? Ich schrieb nur nicht "veraltet", sondern "ursprünglich", denn diese Schreibweise ist eben nicht veraltet. Wäre sie das, würde der Interpreter sie ja als fehlerhaft anmeckern.

    Die ursprüngliche Frage hast Du aber schon gelesen, ja? Es ging um die Funktionen Left / Left$. Dort kommt man nicht sehr weit, wenn man strLeft() verwenden wollen würde... ;-)

    Das würde ich so pauschal nicht sagen, zumindest nicht mit den Worten "allgemein" und "anerkannt" im selben Satz. Diese Präfix-Geschichten kenne ich schon, seitdem ich mit Access 2 und Excel 4 unter Windows 3 gearbeitet habe. Und trotzdem sehe ich heute noch, 20(?) Jahre später, eine große Mehrheit, 70 bis 80% vielleicht, an Sourcen, die sich eben nicht an diese Konvention halten (wollen).

    Das hängt aber wohl auch damit zusammen, daß es im Basic eben
    - Variablen-Typkennzeichen ($, &, ...) gibt
    - den Variablentyp "Variant" gibt
    - ein sehr laxes Typecasting gibt

    Diese Konvention macht in jedem Fall Sinn in Sprachen, wo es diese Kennzeichen eben nicht gibt. Natürlich läßt sie sich auch prima auf Basic übertragen, ist dort aber lange nicht so zwingend. In Pascal würde ich ein Riesengemecker kriegen, wenn ich
    lngZeile := 5;
    strZelle := 'C' + lngZeile;
    versuchen würde. In Basic ist aber
    lngZeile = 5
    strZelle = "C" & lngZeile
    überhaupt kein Problem.

    Gruß, Michael
     
Thema:

Frage zu Besonderheit in VBA

Die Seite wird geladen...
  1. Frage zu Besonderheit in VBA - Similar Threads - Frage Besonderheit VBA

  2. FRAGE: Wenn(oder ; Wenns

    in Microsoft Excel Hilfe
    FRAGE: Wenn(oder ; Wenns: Hallo liebe Excel Legenden. Ich zerbreche mir jetzt schon seit Stunden den Kopf. Folgende Situation: Spalte A Tätigkeit Spalte B Anzahl Max Spalte C Anzahl Min Wenn ich jetzt bei Tätigkeit in...
  3. Frage zu Wenn Formel

    in Microsoft Excel Hilfe
    Frage zu Wenn Formel: Hallo, ich habe eine Liste bei der ich, wenn in einer Zelle die Meldung Net Price steht, dann nicht gerechnet werden soll. Allerdings ist bei mir diese Zeile nicht die eigentliche in der...
  4. Doofe Frage zu Power Query

    in Microsoft Excel Hilfe
    Doofe Frage zu Power Query: Hallo zusammen, habe ein doofe Frage. Ich habe über den Weg -Daten-Daten abrufen-aus Datei-aus Arbeitsmappe eine Tabelle in eine andere Mappe importiert. Wenn ich nun in der Quelldatei was ändere...
  5. Office 365 family / Outlook Fragen

    in Microsoft Outlook Hilfe
    Office 365 family / Outlook Fragen: Hallo habe alles neu gemacht am computer jetzt habe ich Win 10 64 bit also Outlook - das was bei Start PRogramme ist öffnet nicht Auf der MS Tastatur ist ein Knopf E-Mail der immer ging es öffnet...
  6. Frage zu CheckBox - TripleState =True

    in Microsoft Excel Hilfe
    Frage zu CheckBox - TripleState =True: Hallo zusammen, ich arbeite an einer kleinen Tabelle und bin beim Erstellen einer UserForm über CheckBoxen gestolpert. In den Eigenschaften gibt es den Triple State, den ich gerne nutzen würde....
  7. Sortierung der Emails/Frage

    in Microsoft Outlook Hilfe
    Sortierung der Emails/Frage: guten morgen, Bei Gmail (z.B.) kommen ankommende Emails stets der Reihe nach,also oben hin stehn, bei Outlook Mail hingegen kommen ankommende Emails mal mittig,mal unten hin,also kreuz und quer.....
  8. Frage zu Formularen

    in Microsoft Outlook Hilfe
    Frage zu Formularen: Hallo, ich habe eine kleine Frage. Und zwar habe ich in einem Kalender ein Formular erstellt, was auch prinzipiell funktioniert. Dort habe ich über den Skript-Editor auch etwas im Skript stehen....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden