2016-07-20 4 views
1

Ist es möglich, ähnliche Unterroutinennamen mit FOR NEXT oder DO LOOPS aufzurufen? Ich habe vierzig Unterroutinen mit ähnlichen Namen. Jede Routine hat geringfügige Abweichungen.Aufrufen ähnlicher Unterroutinennamen mit For For Next oder Do Loops

Ich habe versucht, eine CONTROL, Beispiel: me.control("Sub Name", & I). Funktioniert nicht.

+2

* vierzig Subroutinen mit ähnlichen Namen * ... etwas sagt mir, dass ein Sub mit Parametern übergeben werden kann. Halte deinen Code DRY - Wiederhole dich nicht. – Parfait

Antwort

0

Versuchen Sie, ein Sub/Function- oder Control-Event aufzurufen?

Innerhalb der Schleife können Sie:

Call command1_click

Oder eine Unter/Funktion nur die Unter/Funktionsnamen verwenden rufen und alle erforderlichen Variablen übergeben.

Sie sollten aufpassen, dass Sie nicht zwei Subs/Funktionen mit demselben Namen haben, da Sie Probleme bekommen.

Edit: Wenn ein Unter/Funktion von außerhalb des Formulars aufrufen, sollten Sie sicherstellen, dass es öffentlich ist.

0

Sie können Application.Run verwenden.

Die gerufenen Subs müssen sich in einem Standardmodul befinden.

Sub Test1() 
    Debug.Print "Test1" 
End Sub 

Sub Test2() 
    Debug.Print "Test2" 
End Sub 

Sub TestIt() 

    Dim S As String 
    Dim i As Long 

    For i = 1 To 2 
     S = "Test" & i 
     Application.Run S 
    Next i 

End Sub 

Ausgabe von TestIt:

Test1 
Test2 
0

Sie rechts sind Sie brauchen nur ein paar Dinge zu ändern. Ich musste das heute Morgen nur tun, ich hatte die Kontrollen Tag 1 bis Tag 14 und für jeden Tag gab ich Werte in Excel ein. Was ich getan habe ...

dim c as control 
dim i as integer 
for i = 1 to 40 
set c = me.controls("sub name" & i) 
'do whatever with the control here you use set to establish which control c is 
'then to set the value or use the value 
c = someexpression 'etc. 

next