VBA code stimmt nicht

  • #1
S

simdipl

Mitglied
Themenersteller
Dabei seit
25.05.2005
Beiträge
23
Reaktionspunkte
0
Hallo zusammen

könnt ihr mir weiter helfen
bei dem folgendem code geht es um eine Verteilung die mit einem Makro aufgebaut werden soll
dabei werden Minimum und Maximum bestimmt und die Häufung der Werte soll in einer Schritten gehen. Dafür gibt es die Zeile:

Zahl = (Maximum - Minimum)/Distance

hier ein Zahlenbeispiel:
(5 -3)/2
dabei sollte dann ja 1 raus kommen
bei mir aber nicht da kommt 0 raus könnt ihr mir weiter helfen?

hier ist nochmals der code:
minimum = Worksheets(Tabelle51).Cells(4, 36).Value
maxi = Worksheets(Tabelle51).Cells(4, 32).Value
distance = Worksheets(Tabelle51).Cells(2, 11).Value

'Brechenen der schrittzahl

zahl = ((maxi - minimum) / distance) + 1


Worksheets(Tabelle51).Cells(4, 7).Select
ActiveCell.FormulaR1C1 = zahl

Danke schonmal für die mühe

Martin
 
  • #2
Möglicherweise sind die Werte, die Du aus den einzelnen Zellen beziehst nicht so formatiert wie sie angezeigt werden. Beispiel: Als Zahlenformat hast Du 0 Dezimalstellen eingestellt, ein Wert von 1,23456 wird demnach als 1 angezeigt.

Lösungsmöglichkeit wenn Du ganzzahlige Ergebnisse haben möchtest:

minimum = Int(Worksheets(Tabelle51).Cells(4, 36).Value)
maxi = Int(Worksheets(Tabelle51).Cells(4, 32).Value)
distance = int(Worksheets(Tabelle51).Cells(2, 11).Value)

Falls Dir das nicht hilft, melde Dich. Gib dann aber bitte noch mehr Infos.

Gruß
PiPi
 
  • #3
Hallo simdipl,

in den Zeilen
Code:
Worksheets(Tabelle51).Cells(4, 7).Select
ActiveCell.FormulaR1C1 = zahl
scheiint es mir so, als wolltest du den Value auf->zahl' setzen.
Das hiesse dann
Code:
Worksheets(Tabelle51).Cells(4, 7).Value = zahl

Zur Kontrolle welchen Wert zahl hat kannst Du einen Haltepunkt vor diese Zeile setzen (Klick auf den linken Rand des Fensters vor die Zeile), das Programm bis dahin laufen lassen und dann mit dem Mauscursor über zahl gehen. Dann wird dir der Wert angezeigt.
Alternativ könntest du eine folgende Zeile benutzen.
Code:
MsgBox (zahl)

Weiterhin solltest Du deine Variablen dimensionieren.
Code:
 ->für Ganzzahlen
  Dim Maximum As Long, Minimum As Long, Distance As Long
Code:
 ->für Zahlen mit Nachkomma
  Dim Maximum As Double, Minimum As Double, Distance As Double

Mit dem default Variant können  ganz unerklärliche Fehler zustandekommen.
Gruß Matjes  :)
 
  • #4
Hallo zusammen
Ich habe eure Ratschläge befogt und mal meinen Code ein wenig sauber gemacht und um geändert nun gibt der mir in der Zeile mit der Berechnung der Zahl einen Laufzeitfehler aus, und zwar Laufzeitfehler 6 Überlauf.

Was darf ich darunter nun verstehen?
 
  • #5
Überlauf heißt, der Werte-Bereich der Variablen reicht nicht aus.

Gruß Matjes :)
 
  • #6
Danke für deine Hilfe das Problem habe ich dan Doch anders lösen können.
ich bin hingegangen und habe meine Werte Kopiert und dann sortiert. Anschließend habe ich einen Vergleich gemacht und habe alle überflüssigen Werte gelöscht hat auch funktioniert.

Hier ist noch mal der Code falls es dich interessiert:
'Dient dem Aufbau einer Liste der Klassen für die Häufung und der Summen Häufung
'Die Maxima werden kopiert und der größe nach sortiert
Worksheets(Tabelle51).Select
Range(B3:B52).Select
Selection.Copy
Range(G5).Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Sort Key1:=Range(G9), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

'Vergleich von Doppelten Zahlen und das löschen dieser
Dim Anzahl As Long
Anzahl = 49
n = 1
m = 0

Do While n <= Anzahl
Worksheets(Tabelle51).Cells(5 + n, 7).Select

m = n - 1
Worksheets(Tabelle51).Cells(5, 13).Value = m
If Worksheets(Tabelle51).Cells(5 + n, 7).Value = Worksheets(Tabelle51).Cells(5 + m, 7).Value Then
Selection.Delete Shift:=xlUp
Anzahl = Anzahl - 1
Worksheets(Tabelle51).Cells(5, 14).Value = Anzahl

Else
n = n + 1
Worksheets(Tabelle51).Cells(5, 12).Value = n
End If
Loop

ich habe aber nun noch ein Problem ich wollte eine Formel in ein Feld rein kopieren mit der Behfelszeile:

Worksheets(Tabelle3).Cells(3 + j, 21).Value = =RC[-9]/3.6*(RC[-19]-R[-1]C[-19])
von = U & 3 + j
bis = U & Dauer
ziel = von & : & bis
Selection.AutoFill Destination:=Range(ziel), Type:=xlFillDefault

Dabei bekomme ich die ganze Zeit eine Fehler meldung. Ich habe auch mal versucht eine ander zuweisung über R,C aber das geht auch nicht.

Habt ihr noch ne idee?

Gruss

simdipl
 
  • #7
Hi simdipl,

für die Formelzuweisung solltest du FormulaR1C1 benutzen.
Code:
Worksheets(Tabelle3).Cells(3 + j, 21).FormulaR1C1 = =RC[-9]/3.6*(RC[-19]-R[-1]C[-19])

Gruß Matjes :)
 
  • #8
Hi Matjes

Ich habe die Zeile so geändert wie du schriebst, aber es funktionierte auch nicht.

Ich bin aber auf folgende Lösung gekommen die Läuft sie ist, finde ich sehr umständlich aber sie tut es auch.

Code:
Range(ziel).Select
Set SourceRange = Worksheets(Tabelle3).Cells(3 + j, 21)
Set fillRange = Worksheets(Tabelle3).Range(ziel)

SourceRange.AutoFill Destination:=fillRange

Aber ein recht herzliches Danke schön für eure Unterstützung

Gruß Martin
 
Thema:

VBA code stimmt nicht

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.488
Neuestes Mitglied
elkhse
Oben