Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wo ist mein Fehler???

wo ist mein Fehler?
07.07.2016 12:55:20
Nermin
Hallo liebe Communtiy,
ich habe folgendes Problem: ich hab ein Makro geschrieben welches werte aus einer Matrix nach zwei (x,y) Kriterien raussucht und in mein Datenblatt einfügen soll. Ich arbeite komplett mit variablen und irgendwie findet, die Matrix komischerweise nie den gewünschten Wert.
Sub EingabeUeberpruefenGewichteFlaechePreiseErrechnen()
Dim i As Variant,o As Object, a, s&, z&
Set o = CreateObject("scripting.dictionary")
a = Worksheets("€RohrB36.19").Range("A1").CurrentRegion
For i = 11 To Cells(Rows.Count, "D").End(xlUp).Row
If Cells(i, "O") = "ASME B36.19" Then
For z = 2 To UBound(a)
For s = 2 To UBound(a, 2)
o(a(z, 1) & "|" & a(1, s)) = a(z, s)
Next
Next
z = Cells(i, "F").Value: s = Cells(i, "M").Value     ' hier halt die Werte von  _
irgendwoher...
MsgBox "Der Wert für z = " & z & " / s = " & s & vbLf _
& " = " & o(z & "|" & s)
Cells(i, "R").Value = o(z & "|" & s)
z = 1
End If
Next i
Application.EnableEvents = False
End Sub
Der Fehler sieht dann wie folgt aus: für z soll er nach dem wert 16 suchen und für s nach 9,53, jedoch zeigt mir die MsgBox dass er immer nach 16 und 10 sucht. Wieso 10? und wieso nicht 9,53 wie vorgegeben? Wo ist der Fehler?
Bitte um Hilfe!
Lieben Gruß,
Nermin

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
s falsch dimensioniert > Long statt Double, owT
07.07.2016 12:59:58
Michael

danke, M(m), Gruß owT
07.07.2016 13:03:34
Michael

Aber gern doch M ;-), owT
07.07.2016 13:09:36
Michael

AW: Aber gern doch M ;-), owT
07.07.2016 13:15:39
Nermin
Hey Michael,
bitte nicht direkt beleidigt sein ;) . Ich habe nur deine Antwort nicht direkt verstanden aber ich habs abgeändert und es funktioniert!
Vielen Dank!

Kein Problem! ICH war nicht beleidigt :-) owT
07.07.2016 13:19:52
Michael

ich auch nicht, alles gut... Gruß, owT
07.07.2016 16:12:20
Michael

Beispieldatei?
07.07.2016 13:02:28
Michael
Hi Nermin,
das Dictionary muß nur EINMAL befüllt werden, und zwar VOR der ersten Schleife.
Aber eine konkretere Antwort kann ich Dir nur mit Beispieldatei geben.
Schöne Grüße,
Michael

AW: Beispieldatei?
07.07.2016 13:08:00
Nermin
Hallo Michael,
eine Beispieldatei kann ich soweit nicht hochladen da, dass nur ein Ausschnitt des ganzen ist. Das Problem lässt sich aber grundsätzlich auf eine Fehlerquelle reduzieren: das Makro rundet die 9,53 automatisch auf 10 auf (wieso auch immer), ich habe nämlich probeweise in der Ausgangsmatrix auch alle Werte auf Ganze Zahlen aufrunden lassen und da hat er mir die gewünschten Werte ausgespuckt.
Weiß einer woran das liegt?
Lieben Gruß

Anzeige
Alle Antworten lesen ;-), owT
07.07.2016 13:09:07
Michael

AW: wo ist mein Fehler? Falscher Variablentyp
07.07.2016 13:11:31
Daniel
Hi
naja, mit Dim ... s&, z& hast du den Variablen z und s den Datentyp LONG zugewiesen (& ist das Kurzzeichen für Long)
Long ist ein Ganzzahl-Datentyp.
wenn du einer Ganzzahlvariablen einen Dezimalwert zuweist, wird diese auf die nächste Ganzzahl gerundet.
wenn du einer Variablen Dezimalzahlen zuweisen willst, musst du die Datentypen SINGLE oder DOUBLE verwenden.
Wobei ich hier an dieser Stelle nicht die Zeilen- und Spaltenzähler z und s verwenden würde (für die ist der Datentyp Long höchst sinnvoll), sondern neue Variablen.
Gruß Daniel

Anzeige
AW: wo ist mein Fehler? Falscher Variablentyp
07.07.2016 13:14:39
Nermin
Hey Daniel,
danke für die auführliche Antwort!!! Jetzt hab ichs verstanden und es funktioniert!!! Vielen Dank!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige