Office: VBA - Einfaches Beispiel

Helfe beim Thema VBA - Einfaches Beispiel in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo VBA Könner,</SPAN> so langsam beginne ich mich für VBA zu begeistern, es hat einfach unglaublich viele Möglichkeiten.</SPAN> Nun möchte ich mich... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Tauchmann, 15. Mai 2012.

  1. Tauchmann Erfahrener User

    VBA - Einfaches Beispiel


    Hallo VBA Könner,</SPAN>

    so langsam beginne ich mich für VBA zu begeistern, es hat einfach unglaublich viele Möglichkeiten.</SPAN>
    Nun möchte ich mich einarbeiten und habe auch schon ein schönes Makro mit Hilfe des Recorders gebaut und Formeln verwendet.</SPAN>
    Leider stelle ich fest das die Formeln (Summenprodukt etc.) sehr an den Ressourcen knabbern und bei jeder Filterung neu berechnet wird was schließlich Zeit kostet.</SPAN>
    Daher möchte ich Euch fragen wie man in VBA einen Vergleich von Zelle A2 und B2 macht und entsprechenden den Wert in Zelle B3 ausgibt.</SPAN>
    Weiterhin soll diese Berechnung auf die weiteren Zellen angewendet werden.</SPAN>

    KAnn mir da einer helfen?

    Schöne Grüße</SPAN>
    Tauchmann
    </SPAN>
    P.S. In Google habe leider nichts gefunden und wenn war es sehr kompliziert und nicht verwendbar.VBA - Einfaches Beispiel :(

    [TABLE]
    <COLGROUP><COL><COL width=60><COL width=60></COLGROUP><TBODY>[TR]
    [TD="align: right"][/TD]
    [TD="align: right"][/TD]
    [TD="align: left"]Ergebnis[/TD]
    [/TR]
    [TR]
    [TD="align: right"]1[/TD]
    [TD="align: right"]4[/TD]
    [TD="align: right"][/TD]
    [/TR]
    [TR]
    [TD="align: right"]2[/TD]
    [TD="align: right"]5[/TD]
    [TD="align: right"][/TD]
    [/TR]
    [TR]
    [TD="align: right"]3[/TD]
    [TD="align: right"]3[/TD]
    [TD="align: right"][/TD]
    [/TR]
    [TR]
    [TD="align: right"]4[/TD]
    [TD="align: right"]7[/TD]
    [TD="align: right"][/TD]
    [/TR]
    [TR]
    [TD="align: right"]5[/TD]
    [TD="align: right"]5[/TD]
    [TD="align: right"][/TD]
    [/TR]
    </TBODY>[/TABLE]





    [TABLE]
    <TBODY>[TR]
    [TD="align: right"][/TD]
    [TD="align: right"][/TD]
    [TD="align: left"]Ergebnis
    [/TD]
    [/TR]
    [TR]
    [TD="align: right"]1
    [/TD]
    [TD="align: right"]4
    [/TD]
    [TD="align: right"][/TD]
    [/TR]
    [TR]
    [TD="align: right"]2
    [/TD]
    [TD="align: right"]5
    [/TD]
    [TD="align: right"][/TD]
    [/TR]
    [TR]
    [TD="align: right"]3
    [/TD]
    [TD="align: right"]6
    [/TD]
    [TD="align: right"][/TD]
    [/TR]
    [TR]
    [TD="align: right"]4
    [/TD]
    [TD="align: right"]7
    [/TD]
    [TD="align: right"][/TD]
    [/TR]
    </TBODY>[/TABLE]
    </SPAN>
     
    Tauchmann, 15. Mai 2012
    #1
  2. cpt. Nemo Erfahrener User
    Hallo Tauchmann,

    ... und was soll bei dem Vergleich herauskommen, welches Ergebnis? Dass 4 größer ist als 1? Die Differenz? Etwas anderes? Und was hat das mit dn vorher beschriebenen Funktionen (Summenprodukt) zu tun?

    Idealerweise stellst du hier eine Mustertabelle ein, wo schon diene Anfänge (auch fehlerhaft) der Programmierung drin sind. Und natürlich das Wunschergebnis, welches per "normaler" Formel berechnet oder auch per Hand eingegeben wurde.
     
    cpt. Nemo, 15. Mai 2012
    #2
  3. miriki Erfahrener User
    Dir sollte in jedem Fall aber klar sein: Jede Formel in einem Arbeitsblatt ist um Längen schneller, als ein nachgebautes Pendant in VBA. Wenn Dir eine Liste mit 12.000 SummeWenn() Funktionen zu langsam ist, dann stell Dich auf ein Vielfaches der Wartezeit ein, wenn Du das per VBA nachbaust.

    Aber: Wenn Du das als "one shot" Berechnung brauchst, dann mag es eine Alternative sein. Soll heißen: Du könntest zwar eine entsprechende Formel einsetzen, aber die Liste ist statisch und von daher sind Neuberechnungen nicht notwendig. Dann kann man auch das Ergebnis selbst, z.B. per VBA, einfügen.

    Nur: In dem Moment wäre wohl das Eintragen der Formeln, Kopieren der Ergebnisse und "Inhalte einfügen - nur Werte" sinnvoller und auch immer noch schneller. (Ich laß bei langen Listen dann meist in der ersten Zeile unter der Überschrift die Formel selbst stehen und ersetz nur die konstanten Werte darunter. So kann ich jederzeit die Formel neu herunterziehen, wenn sich die Liste doch mal ändert.)

    Ich will nur sagen: Verbeiß Dich nicht, außer zu Übungszwecken vielleicht, in Probleme, die mit Bordmitteln schon lösbar sind. Es gibt genug andere Fälle, in denen VBA dann nicht nur sinnvoll, sondern sogar notwendig wird.

    Gruß, Michael
     
    miriki, 16. Mai 2012
    #3
  4. Exl121150 Erfahrener User

    VBA - Einfaches Beispiel

    Hallo Tauchmann,

    Ich habe ein gewisses Verständnis dafür, dass, wenn man sich in eine neue Materie einarbeiten will, man dann natürlich bei den einfachen Fällen beginnt.
    Im vorhin dargestellten Problem nehme ich an, dass Du die Differenz aus den Werten, die in den Zellen A2 und B2 enthalten sind, ermitteln willst und diese dann in einer dritten Zelle (zB. E2) speichern willst.
    Das geht am einfachsten mit einer benutzerdefinierten Funktion.
    Im allgemeinen Code-Modul von VBA gibt man dazu folgende Funktion ein:
    Code:
    Option Explicit
    Public Function Differenz(S1 As Variant, S2 As Variant) As Variant
       Differenz = S1 - S2
    End Function
    
    Dann kann man die Funktion DIFFERENZ so verwenden, als wäre sie eine ganz normale Arbeitsblattfunktion. Will man in Zelle E2 die Differenz der Zellwerte von A2 und B2, so gibt man in Zelle E2 folgende Formel ein:
    =DIFFERENZ(A2;B2)
    oder in einer anderen Zelle die Differenz der Zellwerte von C5 und G3:
    =DIFFERENZ(C5;G3)

    Weiß man, dass man stets nur die Differenz von 2 Ganzzahlen bilden will, so kann man auch wie folgt programmieren:
    Code:
    Public Function DiffGanz(S1 As Long, S2 As Long) As Long
       DiffGanz = S1 - S2
    End Function
    
    Im Arbeitsblatt sieht dann die angewandte Formel folgendermaßen aus:
    =DIFFGANZ(F7;A9)
    wenn in F7 und A9 Ganzzahlen enthalten sind, deren Differenz in einer 3. Zelle ermittelt werden soll.
     
    Exl121150, 16. Mai 2012
    #4
  5. Tauchmann Erfahrener User
    Hallo zusammen,

    sorry für die seeeeehr späte Antwort. (Tja, die liebe Arbeit hält einen so beschäftigt das man alles ringsherum vergisst)
    Ich möchte mich bei euch für Eure Antworten danken.

    Bei meinem ersten richtigen Code verwende ich in VBA Formeln die dann im Arbeitsblatt als Formeln dargestellt werden (so hat es mir der Recorder aufgenommen).
    Nun ist aber bei einer Filterung der Werte das Problem das alle Zellen wieder neu berechnet werden, obwohl bei einer festen Eintragung von Werten durch den VBA code dies nicht notwendig wäre und somit eine Auswertuing der Daten schneller gehen würde.

    Naja, mein Problem habe ich zwar immer noch, aber ich werde hier noch ein paar VBA Trainigsrunden machen müssen.

    Einen schönen Sonntagabend wünsche Euch
    Tauchmann
     
    Tauchmann, 3. Juni 2012
    #5
  6. Exl121150 Erfahrener User
    Hallo!

    Um in Zelle B3 den Differenzwert von Zelle B2 abzüglich Zelle A2 zu speichern mit einem VBA-Makro:
    Code:
    Sub Makro1()
        'Kopiere Wert aus Zelle B2 nach Zelle B3
        Range("B2").Copy Range("B3")
        'Subtrahiere Wert aus Zelle A2 vom Wert der Zelle B3
        Range("A2").Copy
        Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlSubtract, SkipBlanks:=False, Transpose:=False
        'Beende Kopiermodus
        Application.CutCopyMode = False
    End Sub
    
    oder aber mit folgendem Makro:
    Code:
    Sub Makro2()
        With Range("B3")
          'Berechne in Zelle B3 die Differenz von Zelle B2 abzüglich Zelle A2
          .FormulaR1C1 = "=R[-1]C-R[-1]C[-1]"
          'Wandle die Formel in Zelle B3 in einen bloßen Zellwert um:
          .Copy
          .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End With
        'Beende Kopiermodus
        Application.CutCopyMode = False
    End Sub
    
    Beide Makros wiederum in einem allgem. Code-Modul speichern.
    Aus dem Arbeitsblatt sind sie über die Tastenkombination Alt+F8 aufrufbar.
     
    Exl121150, 9. Juni 2012
    #6
Thema:

VBA - Einfaches Beispiel

Die Seite wird geladen...
  1. VBA - Einfaches Beispiel - Similar Threads - VBA Einfaches Beispiel

  2. VBA in einer Zeile zu lang

    in Microsoft Excel Hilfe
    VBA in einer Zeile zu lang: Moin, mein VBA Code ist für eine Zeile zu lang. Kann mir einer helfen wie ich den auf 2 Zeilen aufteilen Kann? arrSchuhDaten = Array(Range("A6"), Range("F6"), Range("J6"), Range("A7"),...
  3. Listbox wird nicht breiter, Schriftgrösse ändert sich

    in Microsoft Excel Hilfe
    Listbox wird nicht breiter, Schriftgrösse ändert sich: Hallo, ich habe ein Formular dessen Breite ich mit der Maus ändern kann. Im Formular habe ich einen Rahmen und darin eine Listbox deren Breite an die Formularbreite angepasst wird....
  4. Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch

    in Microsoft Excel Hilfe
    Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch: Hallo zusammen, erstmal danke für all die Tipps und Kniffe, die ich ohne eigenen Thread gefunden und gelernt habe. Leider finde ich mein Thema nirgendwo... Aktuell habe ich zwei Spalten mit...
  5. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  6. Einfaches Blockschaltbild mit VBA (Flowchart)

    in Microsoft Excel Hilfe
    Einfaches Blockschaltbild mit VBA (Flowchart): Hallo, vielleicht ist mein Beitrag für andere Nutzer von Excel hilfreich. Ich muss , um noch durchblicken zu können, unbedingt Ablaufpläne (Flowcharts) erstellen. Leider komme ich mit dem Text...
  7. Fehler 400 bei einfachen VBA-Code

    in Microsoft Excel Hilfe
    Fehler 400 bei einfachen VBA-Code: Guten Tag Excel-Experten Wieder mal sitze ich auf dem Schlauch und brauche eure Hilfe. Meine Kalkulationsdatei ist ziemlich fortgeschritten, habe bereits eine Menge Code geschrieben....
  8. einfach nur per VBA auf einen TABELLENWERT zugreifen

    in Microsoft Access Hilfe
    einfach nur per VBA auf einen TABELLENWERT zugreifen: Hallo! also ich denke mein problem ist simpel, habe halt nur noch nicht soviel ahnung von access und insbes. von basic, so dass ich schonmal jetzt um eine möglichst idiotengerechte antwort...
  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