Ich verwende immer andere Bezeichnungen da ich die Formeln öfters benötige und daher doppelte Bezeichnungen habe was zu einer Fehlermeldung führt.
Wie meinst du das, "öfters benötigt und daher doppelte Bezeichnungen"?
Du kannst Variablen öfters verwenden.
Sub Test()
Dim i As Long
For i = 1 To 100
'mach etwas
Next
For i = 1 To 34
'mach etwas anderes
Next
For i = -100 To -1
'mach etwas "negatives"
Next
End Sub
Außerdem ist die Variable i wie auch jede andere, in der Prozedur deklarierte (Dim) Variable, nur in dieser Prozedur (Test) bekannt.
In jeder anderen Prozedur kanns du i erneut definieren und verwenden.
Es zeigt keinen Fehler beim Starten aber das Excel hängt sich leider auf. Evtl. zu viel verlangt?
Beim Programmieren muss man sich immer auch darum Gedanken machen was man da eigentlich genau treibt.
Diese Schleifen hier
For i = 4 To 3951
For SpalteWks1 = wks1.Columns("DTY").Column To wks1.Columns("FXH").Column '3249 to 4688
For SpalteWks2 = wks2.Columns("F").Column To wks2.Columns("BCO").Column ' 6 to 1445
heißt im Endeffekt (3951-4) * (4688-3249) * (1445-6) = 8.173.135.787? Aktionen. natürlich braucht der Rechner dafür ne ganze weile Zeit. ;-)
Wenn man sich das dann überlegt hat, sollte man Gedanken darüber machen, ob es vielleicht Möglichkeiten zur Optimierung gibt.
Aber zumindest sollte man verstehen, dass es dauern kann, und das man der Sache Zeit geben muss.
In diesem Fall wäre der erste und einfachste Gedanke:
For i = 4 To 3951
For SpalteWks1 = wks1.Columns("DTY").Column To wks1.Columns("FXH").Column
For SpalteWks2 = wks2.Columns("F").Column To wks2.Columns("BCO").Column
'...
Next
Next
DoEvents 'dem Betriebssystem Zeit zum "Denken" geben, bevor es hier mit VBA/Excel weitergeht
Next
Dann scheint es auch nicht mehr so, als ob Excel sich aufgehängt hat / nicht mehr reagiert.
Die Formel besteht daraus, ich verplane im Sheet1 für meine Arbeit "Farbcodes", welche dann im Sheet 2 erscheinen sollen in den Zellen.
DTY bis FXH 4 bis 3951 ist sozusagen 1:1 F bis BCO 4 bis 3951
Verstehe leider nicht genau was du damit meinst.
|