Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
10.11.2015, 01:02
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2015, 01:19 von Käpt'n Blaubär.)
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
Registriert seit: 08.11.2015
Version(en): 2007/2013
10.11.2015, 11:51
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2015, 12:01 von Bärenmarke.)
So ich bin etwas in mich gegangen und habe meinen Code optimiert
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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 StringLass die 0 (Null) weg!!
Gruß Uwe
Registriert seit: 08.11.2015
Version(en): 2007/2013
(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 :(
Registriert seit: 08.11.2015
Version(en): 2007/2013
10.11.2015, 14:23
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2015, 14:40 von Bärenmarke.)
(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
Jetzt fehlt mir nur noch ein Produkt, sprich ich muss meine Logik noch überarbeiten.
Das klappt jetzt auch
Vielen Dank an euch, bis zur nächsten Frage