Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1312to1316
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
Inhaltsverzeichnis

Schleifen Funktionen

Schleifen Funktionen
23.05.2013 13:33:37
Annika
Hallo!
Habe drei Variabeln die einen Start und Endwert haben, die Variabeln sollen über eine Schrittweite die ebenfalls als Variable definiert ist benutzt werden. Eingabe der Variabeln hab ich über eine inputbox realisiert.
Ziel ist es eine Tabelle im Excel übe Makro zu generieren in der alle Kombinationsmöglichkeiten der drei Variabeln aufgeführt sind.
Ich bin soweit gekommen, dass über drei nach einander geschriebenen For-/Next-Schleifen mir zu jeder Variabeln die Reihe mit den richtigen Steps generiert wird.
Über verschachteln der For-/Next-Schleifen hab ich es hin bekommen, dass von einer Variabeln die Reihe einmal dargestellt wird von der zweiten die Reihe so oft dargestellt wird wie die erste Variabeln-Reihe Schritte hat. Und die dritte Variabeln-Reihe wird dann Schritteanzahl hoch 3 wiederholt.
Problem die Variabeln-Reihen der ersten zwei werden nicht komplett bis zum schluss durchgezogen.
Gibt es eine möglichkeit über eine Verschachtelung von For-/Next-Schleifen, Do-/Loop-Schleifen oder While-/Wend-Schleifen die Tabelle so generieren zu lassen, dass alle Kombinationsmöglichkeiten dargestellt werden.
Habe meine Versuchs Excel-Tabelle angefügt. Ebenfalls ist in der Excel-Datei ein ganz einfaches Beispiel wie ich mir das Ergebniss vorstelle.
https://www.herber.de/bbs/user/85486.xlsm
Hier ist mein Makro:

Sub For_Next_Schleife()
Dim dblDurchmesserinnenStart     As Double
Dim dblDurchmesserinnenEnde      As Double
Dim dblDurchmesserinnenSchrittweite     As Double
Dim dblDurchmesserinnenSchritte         As Double
Dim intRowDurchmesserinnen              As Integer
Dim dblDurchmesseraussenStart     As Double
Dim dblDurchmesseraussenEnde      As Double
Dim dblDurchmesseraussenSchrittweite     As Double
Dim dblDurchmesseraussenSchritte         As Double
Dim intRowDurchmesseraussen             As Integer
Dim dblSpulenhöheStart     As Double
Dim dblSpulenhöheEnde      As Double
Dim dblSpulenhöheSchrittweite     As Double
Dim dblSpulenhöheSchritte         As Double
Dim intRowSpulenhöhe             As Integer
Application.ScreenUpdating = False
'Startzeile der Zahlenreihe festlegen
intRowDurchmesserinnen = 10
intRowDurchmesseraussen = 10
intRowSpulenhöhe = 10
'Eingabe über Inputboxen
On Error GoTo Ende
dblDurchmesserinnenStart = InputBox("Startzahl Durchmesserinnen eintragen", "Startzahl", Range(" _
B3"))
dblDurchmesserinnenEnde = InputBox("Endzahl Durchmesserinnen eintragen", "Endzahl", Range("B4")) _
dblDurchmesserinnenSchrittweite = InputBox("Schrittweite Durchmesserinnen eintragen", " _
Schrittweite", Range("B5"))
dblDurchmesseraussenStart = InputBox("Startzahl Durchmesseraussen eintragen", "Startzahl",  _
Range("C3"))
dblDurchmesseraussenEnde = InputBox("Endzahl Durchmesseraussen eintragen", "Endzahl", Range("C4" _
))
dblDurchmesseraussenSchrittweite = InputBox("Schrittweite Durchmesseraussen eintragen", " _
Schrittweite", Range("C5"))
dblSpulenhöheStart = InputBox("Startzahl Spulenhöhe eintragen", "Startzahl", Range("D3"))
dblSpulenhöheEnde = InputBox("Endzahl Spulenhöhe eintragen", "Endzahl", Range("D4"))
dblSpulenhöheSchrittweite = InputBox("Schrittweite Spulenhöhe eintragen", "Schrittweite", Range( _
"D5"))
On Error GoTo 0
'Alle Werte im Bereich "C5:C65536" löschen
Range("B5:B75536").ClearContents
Range("C5:C75536").ClearContents
Range("D5:D75536").ClearContents
'Eingabewerte übertragen
Range("B3") = dblDurchmesserinnenStart
Range("B4") = dblDurchmesserinnenEnde
Range("B5") = dblDurchmesserinnenSchrittweite
Range("C3") = dblDurchmesseraussenStart
Range("C4") = dblDurchmesseraussenEnde
Range("C5") = dblDurchmesseraussenSchrittweite
Range("D3") = dblSpulenhöheStart
Range("D4") = dblSpulenhöheEnde
Range("D5") = dblSpulenhöheSchrittweite
If dblDurchmesserinnenStart > dblDurchmesserinnenEnde And dblDurchmesserinnenSchrittweite > 0  _
Then _
dblDurchmesserinnenSchrittweite = dblDurchmesserinnenSchrittweite * -1
If dblDurchmesseraussenStart > dblDurchmesseraussenEnde And dblDurchmesseraussenSchrittweite >  _
0 Then _
dblDurchmesseraussenSchrittweite = dblDurchmesseraussenSchrittweite * -1
If dblSpulenhöheStart > dblSpulenhöheEnde And dblSpulenhöheSchrittweite > 0 Then _
dblSpulenhöheSchrittweite = dblSpulenhöheSchrittweite * -1
For dblDurchmesserinnenSchritte = dblDurchmesserinnenStart To dblDurchmesserinnenEnde Step  _
dblDurchmesserinnenSchrittweite
Cells(intRowDurchmesserinnen, 2) = dblDurchmesserinnenSchritte
intRowDurchmesserinnen = intRowDurchmesserinnen + 1
For dblDurchmesseraussenSchritte = dblDurchmesseraussenStart To dblDurchmesseraussenEnde  _
Step dblDurchmesseraussenSchrittweite
Cells(intRowDurchmesseraussen, 3) = dblDurchmesseraussenSchritte
intRowDurchmesseraussen = intRowDurchmesseraussen + 1
For dblSpulenhöheSchritte = dblSpulenhöheStart To dblSpulenhöheEnde Step dblSpulenhö _
heSchrittweite
Cells(intRowSpulenhöhe, 4) = dblSpulenhöheSchritte
intRowSpulenhöhe = intRowSpulenhöhe + 1
Next
Next
Next
Ende:
End Sub

Danke vor ab für eure Hilfe
Gruß Annika

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleifen Funktionen
23.05.2013 13:55:14
Rudi
Hallo,
kleiner Denkfehler. So muss die Schleife aussehen:
        For dblDurchmesserinnenSchritte = dblDurchmesserinnenStart To dblDurchmesserinnenEnde  _
Step dblDurchmesserinnenSchrittweite
For dblDurchmesseraussenSchritte = dblDurchmesseraussenStart To  _
dblDurchmesseraussenEnde Step dblDurchmesseraussenSchrittweite
For dblSpulenhöheSchritte = dblSpulenhöheStart To dblSpulenhöheEnde Step dblSpulenhö _
heSchrittweite
Cells(intRowSpulenhöhe, 2) = dblDurchmesserinnenSchritte
Cells(intRowSpulenhöhe, 3) = dblDurchmesseraussenSchritte
Cells(intRowSpulenhöhe, 4) = dblSpulenhöheSchritte
intRowSpulenhöhe = intRowSpulenhöhe + 1
Next
Next
Next
Gruß
Rudi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige