Hilfe bei VBA für Diplomarbeit

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Turtle79.

    Hilfe bei VBA für Diplomarbeit

    Hallo Leute,

    ich habe folgendes Problem:
    Ich habe ein Makro programmiert und muss diese Aneinanderreihung von Befehlen 500mal ausführen. Die Endwerte soll jeweils in eine andere Spalte geschrieben werden untereinander (d.h. 500 neue Werte). Das Makro steht soweit, nur die Schleife fehlt und das Rausschreiben der Werte (bzw. dass das Programm die Werte alle unter einander setzt...das Rausschreiben konnte ich durch Makroaufzeichnung lösen)


    Ich weiß nicht genau, wie ich das dann aufbaue:


    For (i=1;i<=500;i=i+1) vor ()

    Next i

    Wo schreibe ich was hin? Bitte verständlich erklären, denn ich bin Laie auf dem Gebiet.

    Danke Nils
    Die Schleife muss so aussehen:

    for i = 1 to 500
    '[...]
    next i

    Was in der Schleife passieren soll kann ich nicht wissen, da müsstest du schon schreiben, wo der Wert drin steht usw., also mehr Quelltext liefern.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Das ist jetzt ein Auszug aus den Befehlen. Ich habe Daten in einem Excel Sheet, daraus werden Zufallszahlen gezogen und dann anhand der Ziehungen per SVerweis weitere Daten zugeordnet und dann im letzten Schritt anhand dieser Daten etwas berechnet. Das Makro funktioniert wunderbar, jetzt muss ich nur die Schleife dahin bekommen, dass er das 500 mal berechnet und den letzten Wert jeweils woanders hinschreibt.



    ' Zufallszahlen Makro
    Application.Run "ATPVBAEN.XLA!Sample", ActiveSheet.Range("$B$3:$B$146"), Range("$E$3:$E$146"), "R", 500, False

    ' SVerweis Makro

    Range("F3").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R3C2:R146C3,2,FALSE)"
    Range("F3").Select
    Selection.AutoFill Destination:=Range("F3:F502"), Type:=xlFillDefault
    Range("F3:F502").Select

    ' BerechnunginklKosten Makro

    Range("G3").Select
    ActiveCell.FormulaR1C1 = "=84.12*(RC[-2]/100+1)"
    Range("G4").Select
    ActiveCell.FormulaR1C1 = "=(84.12+R[-1]C)*(RC[-2]/100+1)"
    Range("G4").Select
    Selection.AutoFill Destination:=Range("G4:G14"), Type:=xlFillDefault
    Range("G4:G14").Select
    Range("G14").Select
    ActiveCell.FormulaR1C1 = "=(84.12+R[-1]C-10)*(RC[-2]/100+1)"
    Range("G15").Select
    ActiveCell.FormulaR1C1 = "=(84.12+R[-1]C)*(RC[-2]/100+1)"
    Range("G4:G15").Select
    Selection.AutoFill Destination:=Range("G4:G242"), Type:=xlFillDefault
    Range("G4:G242").Select

    ' BerechnunginklKosten2 Makro

    Range("G243").Select
    ActiveCell.FormulaR1C1 = _
    "=(84.12+R[-1]C)*(0.85*(RC[-2]/100+1)+0.15*(RC[-1]/100+1))"
    Range("G244").Select
    ActiveWindow.SmallScroll Down:=9
    Range("G243").Select
    Selection.AutoFill Destination:=Range("G243:G254"), Type:=xlFillDefault
    Range("G243:G254").Select
    Range("G254").Select
    ActiveCell.FormulaR1C1 = _
    "=(84.12+R[-1]C-10)*(0.85*(RC[-2]/100+1)+0.15*(RC[-1]/100+1))"
    Range("G243:G254").Select
    ActiveWindow.SmallScroll Down:=27
    Selection.AutoFill Destination:=Range("G243:G302"), Type:=xlFillDefault
    Range("G243:G302").Select
    Range("G302").Select

    ' BerechnunginklKosten3 Makro

    Range("G303").Select
    ActiveCell.FormulaR1C1 = _
    "=(84.12+R[-1]C)*(0.55*(RC[-2]/100+1)+0.45*(RC[-1]/100+1))"
    Range("G303").Select
    Selection.AutoFill Destination:=Range("G303:G314"), Type:=xlFillDefault
    Range("G303:G314").Select
    Range("G314").Select
    ActiveCell.FormulaR1C1 = _
    "=(84.12+R[-1]C-10)*(0.55*(RC[-2]/100+1)+0.45*(RC[-1]/100+1))"
    Range("G303:G314").Select
    Selection.AutoFill Destination:=Range("G303:G470"), Type:=xlFillDefault
    Range("G303:G470").Select


    ' Ergebnis Makro

    Range("G470").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Tabelle2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False




    Ich verzweifel noch daran.

    Gruß Nils
    Hallo Nils,

    dein Quelltext ist einfach (nicht böse sein) schlecht. Du hast einfach das, was der Makrorekorder ausspuckt nicht sauber bearbeitet. ActiveCell und Select benötigt man meist gar nicht!

    Ich habe weder die Lust noch die Zeit, mich da einzuarbeiten. Dein Ziel sollte es also sein, uns mit wenig Worten dein Ziel zu erklären. Du hast von Marcus schon gezeigt bekommen, wie man eine For-Next-Schleife anlegt. Was verstehst du daran nicht?

    Hier mal ein kleiner Bsp-Text. In Spalte A und B stehen Zahlen, die Summe soll in Spalte C angezeigt werden. Nur die ersten 10 Reihen sollen berechnet werden. Dieser Quelltext dient nur zur Veranschaulich, ansonsten würde ich das anders bewerkstelligen:

    Visual Basic-Quellcode

    1. Sub test()
    2. Dim oWks As Worksheet 'Objektvariable, das aktive Tabellenblatt
    3. Dim i As Long 'Zählervariable
    4. 'Verweis auf das Aktive Sheet (du musst dafür sorgen, dass es aktiv ist
    5. Set oWks = ActiveSheet
    6. 'Schleife durchläuft die Zeilen 1 bis 10
    7. For i = 1 To 10
    8. 'Spalte 3 = Spalte 1 + Spalte 2
    9. oWks.Cells(i, 3) = oWks.Cells(i, 1) + oWks.Cells(i, 2)
    10. Next i
    11. 'Objektverweis freigeben
    12. Set oWks = Nothing
    13. End Sub


    Gruß Markus
    Danke, werde versuchen damit klar zu kommen...Laie heißt kein Fachmann, aber passt schon....
    Habe die Schleife wohl jetzt mit Hilfe des Beispiels hinbekommen.

    Gruß Nils

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