Excel Range mit Variable adressieren

sailor

Level-1
Beiträge
641
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich möchte ein Excelblatt mit einen Array aus einer Steuerung (S7) beschreiben.
Die Spalte ist M, beginnt ab Zeile 4.
Die Variable CNT1 ist eine Schleifenzähler,der auch das Element des Array adressiert.

Das hier funktioniert nicht:

Do
wsExcel.Range("M"+4+CNT1) = HmiRuntime.SmartTags("Test_TIME_OUT")(CNT1)
CNT1 = CNT1+1
Loop Until CNT1 = 55
CNT1 = 0

Warum?

Es grüßt
Sailor
 
Was bekommst du denn für einen Meldung bzw. was passiert denn ?

Auf jeden Fall solltest du den Code mal so ändern :
Code:
wsExcel.Range("M"+[B][COLOR=#FF0000]cstr[/COLOR][/B](4+CNT1)) = ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Sailor.

Wenn Dir das "Cells"-Objekt zur Verfügung steht, könntest Du dies verwenden anstatt das "Range"-Objekt.
Die Syntax wäre dann :

Code:
wsExcel.Cells(CNT1 + 3, 13) = ...

Das würde auch eventuelle Typ-Konvertierungen ersparen.
Da Dir die Anzahl der Elemente (55) scheinbar bekannt ist, könntest Du anstatt der Do-Loop-Schleife auch eine For-Next-Schleife verwenden. Das erspart Dir zum Einen die Überprüfung hinsichtlich des momentanen Wertes des Schleifenzählers und zum Anderen entfällt dann auch noch die Erhöhung des Wertes des Schleifenzählers in jedem Durchlauf. Die Abarbeitung Deiner Schleife würde dadurch also schneller werden.
Beispiel:

Code:
For CNT1 = 1 To 55
    wsExcel.Cells(CNT1 + 3, 13) = HmiRuntime.SmartTags("Test_TIME_OUT")(CNT1)
Next
 
Zuletzt bearbeitet:
Da Dir die Anzahl der Elemente (55) scheinbar bekannt ist, könntest Du anstatt der Do-Loop-Schleife auch eine For-Next-Schleife verwenden. Das erspart Dir zum Einen die Überprüfung hinsichtlich des momentanen Wertes des Schleifenzählers und zum Anderen entfällt dann auch noch die Erhöhung des Wertes des Schleifenzählers in jedem Durchlauf. Die Abarbeitung Deiner Schleife würde dadurch also schneller werden.

Und du meinst, wenn du weniger schreibst dann wird es automatisch schneller? Eine For-Schleife ist eine Sonderform einer Do-While Schleife, bei der die Inkrement-Anweisung und Abbruchbedingungen implizit erstellt werden. Schneller wird dadurch erstmal nichts.

Wenn man eine For-Schleife verwenden kann, sollte diese alleine wegen der Übersichtlichkeit schon verwendet werden.
 
Zurück
Oben