Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Probleme mit Schleife und Datentransfer

Probleme mit Schleife und Datentransfer
12.08.2007 15:10:51
Nils
Hi Leute,
vorab, ich bin eher ein Laie in VBA und habe mich selber step by step an das Thema rangearbeitet. Allerdings habe ich meine "Programmierung" hauptsächlich mit dem Makrorecorder gemacht. Problem ist jetzt aber:
1. Ich habe ein funktionierendes kompliziertes Makro, was macht, was ich will. Aber ich muss diese Berechnung 500 mal machen, also mit einer Schleife versehen.
2. Der berechnete Endwert soll rausgeschrieben werden und dann soll das Makro einfach wieder ausgeführt werden und die alten Werte überschreiben.
Kann man denn einfach vor ein fertiges Makro eine Schleife setzen, ohne groß zu programmieren? Verzweifele langsam daran und würde mich über Hilfe freuen.
Gruß Nils

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Schleife und Datentransfer
ransi
HAllo
So wie ich das verstanden habe:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit


Public Sub test()
Dim i As Integer
For i = 1 To 500
    'dein Code
Next
End Sub

?
ransi

Anzeige
AW: Probleme mit Schleife und Datentransfer
12.08.2007 15:43:51
Nils
Hi Ransi,
danke für die Hilfe, nur leider kann ich ja irgendwie nicht überprüfen, ob er das immer neu berechnet, wenn er alles überschreibt und ich nur einen Wert hinten rausbekomme. Hast du denn eine Idee wie ich es schaffe, dass ich diesen jeweils errechneten Endwert in eine neue Spalte kopieren kann? Verstehst du was ich meine? Also ich rechne mit Zufallszahlen ein Ergebnis aus....daher kommt bei jeder Berechnung ein anderes Ergebnis raus, was ich in eine neue Spalte haben will - brauche ja die Endergebnisse.
Gruß Nils
PS: Nicht aufregen, bin Laie auf dem Gebiet und versuche die Hilfen dann anzuwenden. Bin sehr dankbar über jede Hilfe.

Anzeige
AW: Probleme mit Schleife und Datentransfer
12.08.2007 20:53:14
Renee
Mazwara Nils,
Stell doch mal Dein kompliziertes Makro, das mach was Du willst hier ins Forum.
Dann erklär noch mal wohin der Output des Makros soll, wenn es mehrmals nacheinander läuft.
Ohne Dein Code ist das ein fruchtloses Ratespiel.
Greetz Renee

AW: Probleme mit Schleife und Datentransfer
13.08.2007 10:02:00
Nils
Na gut, aber es sind halt nur aufgenommene Macros hintereinander gestellt. Laie halt ;)

Sub Zufallszahlen1()
' Überschriften Makro
Range("D1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
ActiveCell.FormulaR1C1 = "Datum"
Range("E1").Select
Selection.Interior.ColorIndex = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
ActiveCell.FormulaR1C1 = "MSCI"
Range("F1").Select
Selection.Interior.ColorIndex = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
ActiveCell.FormulaR1C1 = "CGBI"
Range("G1").Select
Selection.Interior.ColorIndex = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
ActiveCell.FormulaR1C1 = "Berechnung"
Range("H1").Select
' DatumZukunft Makro
Range("D3").Select
ActiveCell.FormulaR1C1 = "1/15/2008"
Range("D4").Select
ActiveCell.FormulaR1C1 = "2/15/2008"
Range("D3:D4").Select
Selection.AutoFill Destination:=Range("D3:D502"), Type:=xlFillDefault
Range("D3:D502").Select
' 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
' BerechnungohneKostenMSCIinklFörd 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:G19"), Type:=xlFillDefault
Range("G4:G19").Select
Range("G19").Select
ActiveCell.FormulaR1C1 = "=(84.12+R[-1]C+154)*(RC[-2]/100+1)"
Range("G8:G19").Select
Selection.AutoFill Destination:=Range("G8:G470"), Type:=xlFillDefault
Range("G8:G470").Select
End Sub


Die Wiederholung sollte vor dem "Zufallszahlenziehen" kommen und hier am Ende sollten dann alle Werte in eine neue Zeile jeweils aussortiert werden, d.h. bei 500 Versuchen alle 500 Zahlen extra.
Gruß und danke Nils

Anzeige
AW: Probleme mit Schleife und Datentransfer
14.08.2007 14:03:48
Renee
Hallo Nils,
Irgendwie werde ich aus diesem Code nicht schlau.
Was soll dieses Programm genau machen?
Kannst Du mal eine Beispielmappe hochladen und erklären, wo Du den Output unter welchen Regeln geschrieben haben willst. Oder willst Du in Kolonne E einfach nur zuällige Werte aus dem Bereich von
B2:D502 ?
Greetz Renee

Deiner Makrosammlung entnehme ich,...
15.08.2007 01:39:17
Luc:-?
...dass du Stichproben (engl samples) zusammenstellen willst, Nils,
und dafür das Analyse-AddIn nutzt. Da ich vermute, dass der Eingabebereich (Param1) immer gleich bleibt und sich nur der Ausgabebereich (Param2) ändert, musst du dafür Sorge tragen, dass Param2 das zyklisch tut (wohl Spalten ab Spalte E). Dazu musst du Param2 [Range("$E$3:$E$146")] auf Range(Cells(3, i), Cells(146, i)) ändern und die Run-Anweisung in einen Zyklus einbetten:

Dim i As Long
Const n As Long = nrletztespalte
For i = 5 to n
Application.Run "ATPVBAEN.XLA!Sample", ActiveSheet.Range("$B$3:$B$146"), _
Range(Cells(3, i), Cells(146,  i)), "R", 500, False
Next i


Natürlich lässt sich dein Code noch deutlich optimieren, aber das wirst du im Laufe der Zeit schon schaffen!
Gruß Luc :-?
PS: Dein 2. Beitrag (Code) war für einen Fachmann zwar aussagekräftig genug, nicht aber für die Allgemeinheit. Du hast das entscheidende Stichwort leider nicht erwähnt... ;-)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige