Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1440to1444
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

InputBox- verschachteltet Schleifen

InputBox- verschachteltet Schleifen
20.08.2015 15:51:01
Julia559
Hallo zusammen,
ich habe bereits ein Makro, dass aus zwei Schleifen (zuerst Makro1 und danach Makro 2) besteht. Jede Schleife, wird mittels einer InputBox gesteuert - siehe unten.
Das Makro funktioniert, allerdings suche ich nach einer Vereinfachung. Wenn z.b. in der InputBox des Makro1 10000 eingegeben wird, muss ich in der InputBox des Makro2 ebenfalls 10000 mal eine Eingabe vornehmen. Kann ich das Makro2 irgendwie abändern, sodass die Inputbox nur beim ersten Mal erscheint, und die vorgenommene Eingabe dann automatisch in die Inputbox der 9999 weiteren Durchläufe übernommen wird? Ich kann leider die zweite Inputbox nicht weglassen, da die Datei an dieser Stelle weiterhin variabel sein muss.
Schon jetzt vielen Dank für eure Unterstützung.
Liebe Grüße,
Julia
Sub Makro1()
Dim vntRet As Variant
Dim lngI As Long
Do
vntRet = Application.InputBox("Wie viele Wiederholungen? (1 bis 10000)", "Wiederholungen", 5,  _
_
Type:=1)
If vntRet = False Then Exit Sub
Loop While vntRet  10000
For lngI =  To vntRet
Next
End Sub

Sub Makro2()
Dim vntSam As Variant
Dim i as long
Do
vntSam = InputBox("Wie viele Teilnehmer sollen gezogen werden?")
If IsNumeric(vntSam) Then Exit Do
Loop
For i = 1 To vntSam
Next i
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: InputBox- verschachteltet Schleifen
20.08.2015 16:27:22
selli
hallo julia,
in ein modul (ausserhalb der makros) deklarierst du die variable vntRet als public.
Dim vntRet As Variant im ersten makro entfällt.
also : Public vntRet As Variant
im 2. makro kannst du dann diese variable ebenfalls verwenden.
gruß
selli

AW: InputBox- verschachteltet Schleifen
20.08.2015 16:29:28
Nepumuk
Hallo,
würde ich so machen:
Sub Makro2()
    Static vntSam As Variant
    Dim i As Long
    If IsEmpty(vntSam) Then
        Do
            vntSam = InputBox("Wie viele Teilnehmer sollen gezogen werden?")
            If IsNumeric(vntSam) Then Exit Do
        Loop
    End If
    For i = 1 To vntSam
        '...
    Next i
End Sub

Gruß
Nepumuk

Anzeige
InputBox- verschachteltet Schleifen
20.08.2015 17:50:49
Julia559
Hallo Nepumuk,
das hat soweit funktioniert. Vielen Dank dafür. Allerdings wird die InputBox des Makros2 auch bei weiteren Makrostarts nicht mehr abgefragt. Genau so hab ich mir das vorgestellt, allerdings wenn ich das Makro ein zweites Mal aufrufe soll beim ersten Durchlauf wieder die Inputbox erscheinen und nicht generell zukünftig ausgeblendet werden. Kann man dies in deinem Code noch irgendwie anpassen? Oder gibt es noch andere Möglichkeiten? Auch an Selli vielen Dank. Allerdings ist mir die Lösung nicht ganz klar. Müsste ich dann ein neues Makro erstellen (mit Public) und dies in mein bestehendes Makro integrieren (über call)?
Grüße,
Julia

Anzeige
AW: InputBox- verschachteltet Schleifen
20.08.2015 17:59:43
Nepumuk
Hallo,
dann so:
Sub Makro1()
    Dim vntRet As Variant, vntSam As Variant
    Dim lngI As Long
    
    Do
        vntRet = Application.InputBox("Wie viele Wiederholungen? (1 bis 10000)", "Wiederholungen", 5, Type:=1)
        If vntRet = False Then Exit Sub
    Loop While vntRet < 1 Or vntRet > 10000
    Do
        vntSam = InputBox("Wie viele Teilnehmer sollen gezogen werden?")
        If IsNumeric(vntSam) Then Exit Do
    Loop
    For lngI = 1 To vntRet
        Call Makro2(vntSam) '!!!!!!!!!!!!!!!!!!!
        ....
    Next
    
End Sub

Sub Makro2(vntSam As Variant)
    
    Dim i As Long
    
    For i = 1 To vntSam
        ...
    Next i
End Sub

Gruß
Nepumuk

Anzeige
AW: InputBox- verschachteltet Schleifen
20.08.2015 21:05:32
Julia559
Super, jetzt läuft alles perfekt. Vielen Dank.

AW: InputBox- verschachteltet Schleifen
21.08.2015 09:11:06
selli
hallo julia,
ich schrieb: in ein modul (ausserhalb der makros) deklarierst du die variable vntRet als public.
gruß
selli

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige