Office: VBA - Frage zu Syntax

Helfe beim Thema VBA - Frage zu Syntax in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, Beverly hat hier http://www.office-hilfe.com/support/topic,16799,-%5Bexcel-2007%5D%3A-makro-bezug-auf-zelle%2C-die-formel-enthaelt.html... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von fette Elfe, 27. August 2011.

  1. fette Elfe Erfahrener User

    VBA - Frage zu Syntax


    Hallo,

    Beverly hat hier
    http://www.office-hilfe.com/support...kro-bezug-auf-zelle,-die-formel-enthaelt.html
    folgenden Code gepostet:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address = "$I$21" Then Worksheets("Tabelle1").Rows(21).EntireRow.Hidden = Target = 1
    End Sub
    Einen ähnlichen Aufbau habe ich jetzt schon ein paar Mal gesehen (mehrere "=" in einer Zeile...).
    Im Prinzip macht Beverlys' Code nichts anderes als der hier:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address = "$I$21" And Target.Value = 1 Then Worksheets("Tabelle1").Rows(21).EntireRow.Hidden = True
       If Target.Address = "$I$21" And Target.Value <> 1 Then Worksheets("Tabelle1").Rows(21).EntireRow.Hidden = False
    End Sub
    nur kürzer, und eventuell auch effizienter.

    Kann mir bitte jemand die Syntax erklären?
    Ich weiß das es funktioniert, aber ich weiß nicht warum, sprich ich kann so eine Zeile nicht in anderen Situationen reproduzieren oder anpassen.
     
    fette Elfe, 27. August 2011
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Achim,

    der Code bedeutet: Zeile ausblenden wenn Target = 1 ist - und nur in diesem Fall. Dass bei einer anderen Eingabe die Zeile eingeblendet werden soll, kann Excel daraus "schlussfolgern".

    Bis später,
    Karin
     
    Beverly, 27. August 2011
    #2
  3. fette Elfe Erfahrener User
    Hallo Beverly,

    danke für Deine Antwort.
    Hm, wie erkläre ich meine Frage besser?

    Was Du geschrieben hast, war mir eigentlich klar.
    Ist ja offensichtlich.

    Code nach meinem Muster folgt im Prinzip der gleichen Struktur wie eine Wenn-Funktion (Formel).
    Wenn > Dann (evtl. auch noch Sonst)

    Dein Code hat eine andere Struktur.
    Ich glaube man könnte ihn mit Wenn-Und-Dann vergleichen.

    Nun habe ich VBA (leider) nie strukturiert gelernt, ich habe mir mein bisheriges Wissen durch Anlesen, Ausprobieren und natürlich Nachfragen erarbeitet, aber fast immer Problembezogen.

    Die Wenn-Dann-Struktur, die ich bisher kannte, kann man ja eigentlich auf alles alles anwenden was sich irgendwie Abfragen lässt, und damit auch alles auslösen, was sich irgendwie auslösen lässt.

    Ich weiß, das ist jetzt weit gefasst und vielleicht zu abstrakt, aber was kann man mit Deiner Art so alles machen?
    In welchen Fällen eignet sie sich?
    Und ist dies eine neuere Schreibweise? Denn ich habe sie erst in letzter Zeit (zumindest bewusst) ein paar Mal gesehen.

    Ich hoffe jetzt ist etwas verständlicher was ich meine, und hoffentlich lässt sich die Frage überhaupt beantworten...
     
    fette Elfe, 28. August 2011
    #3
  4. Hajo_Zi
    Hajo_Zi Erfahrener User

    VBA - Frage zu Syntax

    Hallo Achim,

    für das Ein-Ausblenden brauchst Du die schlüsselwörter False oder True
    der Vergleich Target = 1 ergibt False oder True, ist es so vielleicht einfacher?
    Der Vorteil der Zeile von Karin ist, mit einer Zeile werden die Zeile ein- bzw. ausgeblendet.

    Gruß Hajo
     
    Hajo_Zi, 28. August 2011
    #4
  5. Beverly
    Beverly Erfahrener User
    Hi Achim,

    Das geht mir genau so - ich bin da weitestgehend Autodidakt. Den einzigen "Vorteil", den ich vielleicht habe ist der, dass ich vor ca. 30 Jahren mal einen mehrtägigen Lehrgang zur BASIC- und dBASE-Programmierung und 2005 einen Lehrgang zur Access-Programmierung besucht habe (von letzterem habe ich allerdings schon wieder alles vergessen, da ich mich nicht mehr mit Access beschäftige). Den "Rest" habe ich mir durch jahrelange Praxis mittels "try and error" angeeignet. Ich weiß also nicht, ob ich deine Frage zu deiner Zufriedenheit beantworten kann.

    Diese Art der Programmierung ist keinesfalls neu, soweit mir bekannt ist. Die Codezeile stellt sozusagen eine "3-seitige Gleichung" dar, deren Ergebnis WAHR oder FALSCH ist. Das steuernde Element ist der mittlere Teil, welcher den linken und den rechten Teil miteinander "vergleicht". Dabei ist der rechte Teil die Bedingung, unter welcher der linke Teil WAHR werden soll - wenn die Bedingugn erfüllt ist, wird also der Befehl ausgeführt der links steht. Ist der Vergleich FALSCH, wird genau das Gegenteil von dem gemacht was links als auszuführender Befehl steht.
    Man kann sie also immer dann einsetzen, wenn der Vergleich Wahr oder Falsch ergeben kann.

    Ich hoffe, das hilft dir im Verständnis ein wenig weiter.

    Bis später,
    Karin
     
    Beverly, 28. August 2011
    #5
  6. fette Elfe Erfahrener User
    Hallo Beverly,
    ich glaube so langsam komme ich hinter die Struktur:
    WENN Bedingung erfüllt DANN (soweit noch "ganz normal")
    If Target.Address = "$I$21" Then

    FÜHRE AUS = WENN = Bedingung (Abfrage ob erfüllt)
    Worksheets("Tabelle1").Rows(21).EntireRow.Hidden = Target = 1

    Und FÜHRE AUS führt zu zwei Ergebnissen:
    1. ist die Bedingung erfüllt, dann folgt aus FÜHRE AUS ein "TRUE"
    2. ist die Bedingung nicht erfüllt, folgt aus FÜHRE AUS ein "FALSE"


    Definitiv, danke dafür.
    Diese Schreibweise empfinde ich als ein wenig abstrakter, als dass was ich bisher kannte.
    Ist schwerer zu lesen und nach zu vollziehen, außer man hat sich daran gewöhnt (vermutlich).
    Andererseits ist sie kürzer, und damit evtl. schneller. Möglicherweise auch übersichtlicher.

    Ich werde mal noch ein wenig Tante-G quälen und versuchen mich da richtig einzudenken.
     
    fette Elfe, 28. August 2011
    #6
Thema:

VBA - Frage zu Syntax

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

  2. Frage zu Tutorial "Excel - Auswertung von farbigen Zellen"

    in Microsoft Excel Hilfe
    Frage zu Tutorial "Excel - Auswertung von farbigen Zellen": Hallo, sorry, ich war leider zu schnell... konnte das "Problem" jetzt selber lösen. Weiß aber leider nicht, wie man einen Beitrag wieder löscht. gestern bin ich mit der 1. VBA Variante super...
  3. VBA-Frage

    in Microsoft Access Hilfe
    VBA-Frage: Hallo zusammen, erhalte die Fehlermeldung - falche Anzahl an Argumenten oder ungültige Zuweisung einer Eigenschaft. Code: Function MSGOK() As Integer On Error GoTo MSGOK_ERR MSGOK = True...
  4. VBA Frage Access / Excel

    in Microsoft Access Hilfe
    VBA Frage Access / Excel: Hallo zusammen, kann ich aus Access heraus Spalten in einem Excel Sheet was nicht verknüpft ist irgendwie löschen ? Zugreifen auf das Excel Sheet kann ich Code: SELECT * FROM [excel...
  5. VBA - Was macht FreeFile und weitere Fragen

    in Microsoft Excel Hilfe
    VBA - Was macht FreeFile und weitere Fragen: Hallo zusammen, ich habe mal wieder einige Fragen an die VBA Experten. Das Makro zum Überprüfen, ob ein File bereits geöffnet ist oder nicht, habe ich aus dem Netz gefischt...
  6. Frage zur Datumsfunktion (VBA)

    in Microsoft Excel Hilfe
    Frage zur Datumsfunktion (VBA): Hallo Leute, ich habe folgenden VBA-Code gefunden, mit dem man Tabellenblätter auswählen kann, wenn sie nach Monaten benannt sind. Das funktioniert aber nur bei voll ausgeschriebenen Monaten,...
  7. Frage zu Besonderheit in VBA

    in Microsoft Excel Hilfe
    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) =...
  8. vba syntax fragen (Excel 2000)

    in Microsoft Excel Hilfe
    vba syntax fragen (Excel 2000): Ein dickes fettes "Hallo" an euch, Ich bin es schon wieder. Würde gern eurer Fachwissen in Beschlag nehmen. Ich habe mich durch einiges lesen soweit vorgetastet um mittels eines...
  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