Forum des VBA-Tutorials

Excel_Worksheet füllen (VBA)

Pacman, Donnerstag, 18. Mai 2017, 13:38 (vor 11 Tagen)

Danke, hätte ich auch drauf kommen können.

Noch eine weitere Frage:

Im Moment ist es so, dass das Programm immer nur den Endwert der Schleife in jeder Spalte speichert. Ich möchte aber die Zwischenergebnisse speichern.

Im Moment sieht es vereinfacht gesagt so aus:

Option Explicit

Sub Testen()
Dim y As Integer
Dim x As Integer
Dim i As Integer

y = 0
x = 30

Do

y = y + 1

For i = 1 To x
Worksheets(1).Range("A" & i).Value = y

Next

Loop Until y = x

End Sub

Jetzt wird in jeder Zeile i des Worksheets 30 gespeichert, da y am Ende nach vollständigem Durchlaufen der Schleife 30 ist. Ich möchte aber die Zahlen 1-30 stehen haben. Hab gelesen, dass das über ReDim Preserve möglich sein soll. Leider verstehe ich nicht so genau wie das funktioniert.

Gruß

Excel_Worksheet füllen

Martin Asal, Donnerstag, 18. Mai 2017, 14:16 (vor 11 Tagen) @ Pacman

Noch eine weitere Frage:

Neue Frage, neuer Thread ;-)

ReDim Preserve hat was mit Arrays zu tun, damit bist du bei deinem Code gaaanz falsch.


Überhaupt erscheint mir dein Code seltsam: Er überschreibt dreißig Mal den Wert der Zellen in der Spalte A. Ich glaube nicht, dass es das ist, was du willst. Lass' doch mal die Zeilen "Do" und "Loop" weg, und ändere die Zeile in der For-Schleife wie folgt:

Worksheets(1).Range("A" & i).Value = i

Das ist vielleicht eher, das, was du willst. Zumindest, wenn ich dich richtig verstanden habe.

Martin

Excel_Worksheet füllen

Pacman, Donnerstag, 18. Mai 2017, 14:32 (vor 11 Tagen) @ Martin Asal

Okay, ich glaube ich habe mich falsch ausgedrückt.
Leider ist mein kompletter Programm-Code etwas zu aufwendig, um ihm hier reinzustellen.

Im groben geht es darum, dass ich eine Schleife gebaut habe, die bspw. 30 mal durchlaufen wird. In der Schleife werden die aufgezeichneten Messwerte miteinander verglichen und per if/else Bedingungen verschieden bewertet. Es gibt 3 unterschiedliche Bewertungsklassen (K1,K2,K3).

Bspw. könnte Messung 1 mit dem Ergebnis "5" zu K1 zugeordnet werden, Messung 2 zum Ergebnis K2 und so weiter. Alle weiteren Messpunkte würden ebenfalls zu je einem Ergebnis zugeordnet werden.

ich möchte jetzt eine Tabelle in Excel ausgeben, in welcher in der ersten Spalte die Zahlen 1-30 (Anzahl der Messungen) aufgelistet sind. Die Spalten 2, 3 und 4 sollen die Ergebnisse E1, E2 und E3 beinhalten. So will ich ablesen, welche Messungen zu welchen Ergebnissen geführt haben.

Ich hoffe, dass ich es jetzt besser erklärt habe

Excel_Worksheet füllen

Martin Asal, Donnerstag, 18. Mai 2017, 14:57 (vor 11 Tagen) @ Pacman

 
Sub Testen()
Dim x As Long
Dim i As Long
 
x = 30
For i = 1 To x
    ActiveSheet.Range("A" & i) = i
    ActiveSheet.Range("A" & i).Offset(0, 1) = "K1"
    ActiveSheet.Range("A" & i).Offset(0, 2) = "K2"
    ActiveSheet.Range("A" & i).Offset(0, 3) = "K3"
Next
 
End Sub

Natürlich geht das auch ohne Offset - du kannst ja auch Range("B" & i) schreiben. Und das Berechnen der Werte, die anstelle von "K1" usw da rein gehören, musst du natürlich auch noch lösen ;-)

Martin

RSS-Feed dieser Diskussion
powered by my little forum