Excel Zeilen dynamisch auslesen
#21
Hallo Ralf,

Zitat:spätestens jetzt wäre es geschickt, wenn Du Deine kleine Beispieldatei mal zur Verfügung stellst.

DAS .... hätte ich schon vor Ewigkeiten gefordert. Das weißt Du aber auch.
In einer trüben Brühe zu suchen, bringt eben auch bei größtem Enthusiasmus eher Frust als Erfolg.

Ich selbst habe aber so ungefähr vor zwei Minuten diesen Thread erst gelesen
Top
#22
So ich bin etwas in mich gegangen und habe meinen Code optimiert Smile

Jedoch funktioniert er noch nicht ganz und ich weiß nicht wieso :(

Als Fehlermeldung sagt er mir: Fehler beim Kompilieren: Datenfeld bereits dimensioniert.

Und zwar wenn ich mit Redim versuche die Größe meines Arrays zu ändern... Und da frag ich mich wieso gibt es die Möglichkeit es zu ändern, wenn er es nicht macht?

Aber ich kopier hier einfach mal meinen Code, vielleicht fällt euch ja auf, was ich falsch mache.


Code:
Sub summieren()

Dim Zähler As Integer
Dim Summe As Integer
Dim x As Integer
Dim Products(0) As String
Dim Product As String
Dim Arrayzähler As Integer
Dim i As Long
Dim Gefunden As Boolean
Dim Arraygröße As Integer

ThisWorkbook.Worksheets("Tabelle1").Activate
Randomize

Arraygröße = 0
Zähler = 1
Do
Arrayzähler = -1
   If Cells(Zähler, 1).Value = 0 Then
       Cells(26, 1) = "Wir sind fertig"
       Exit Do
   End If
       If Cells(Zähler, 1).Value = "EMEA" Then
           x = Cells(Zähler, 2).Value
           Summe = Summe + x
           Product = Cells(Zähler, 3).Value
       For i = 0 To UBound(Products)
           If Products(i) = Product Then
               Gefunden = True
               Exit For
           Else
               Gefunden = False
           End If
       Next i
       If Gefunden = False Then
           Arraygröße = Arraygröße + 1
           ReDim Preserve Products(0 To Arraygröße)
           Products(Arraygröße) = Product
       End If
       End If
Zähler = Zähler + 1
Loop

Cells(24, 5).Value = Products(0)
Cells(24, 6).Value = Products(1)
Cells(24, 7).Value = Products(2)

'Cells(24, 2).Value = Summe

End Sub
Top
#23
Hallo,

(10.11.2015, 11:51)Bärenmarke schrieb: Als Fehlermeldung sagt er mir: Fehler beim Kompilieren: Datenfeld bereits dimensioniert.

was ist an der Meldung uverständlich?

Du schreibst doch:  Dim Products(0) As String

Lass die 0 (Null) weg!!

Gruß Uwe
Top
#24
(10.11.2015, 12:26)Kuwer schrieb: was ist an der Meldung uverständlich?

Du schreibst doch:  Dim Products(0) As String


Unverständlich deshalb, weil er beim Debuggen beim Redim hängen bleibt. Hatte da nämlich zuerst eine 0 drinstehen, dann bekomme ich aber einen Laufzeitfehler und er bleibt bei For i = 0 To UBound(Products) hängen.

Verstehe allerdings nicht wieso :(
Top
#25
(10.11.2015, 12:38)Bärenmarke schrieb: Unverständlich deshalb, weil er beim Debuggen beim Redim hängen bleibt. Hatte da nämlich zuerst eine 0 drinstehen, dann bekomme ich aber einen Laufzeitfehler und er bleibt bei For i = 0 To UBound(Products) hängen.

Verstehe allerdings nicht wieso :(

Problem gelöst, ich hab jetzt vor der Do Schleife noch folgendes eingefügt:
ReDim Products(Arraygröße)

Danach ging es Smile

Jetzt fehlt mir nur noch ein Produkt, sprich ich muss meine Logik noch überarbeiten.
Das klappt jetzt auch Smile
Vielen Dank an euch, bis zur nächsten Frage Smile
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste