Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Überlauf

Überlauf
28.07.2006 15:50:27
Xico
Hallo,
aus 52 Tabellen hole ich mir mit Hilfe von unten stehendem Code 12 Monatswerte. Bei den ersten 16 Tabellen wird alles ordendlich in die Zieltabelle geschrieben, ab der 17. gibt es einen Überlauf?!?
Heier mien Code (Anfänger-Sprache):

Sub RestRein()
Dim v, w%
For v = 5 To 2085 Step 40
For w = 5 To 16
Cells(v, w + 29).ClearContents
Cells(v, w + 29) = (Sheets((v - 5) / 40 + 3).Cells(9, w) _
+ Sheets((v - 5) / 40 + 3).Cells(12, w) - Sheets((v - 5) / 40 + 3).Cells(8, w)) _
/ (Sheets((v - 5) / 40 + 3).Cells(37, w) + Sheets((v - 5) / 40 + 3).Cells(38, w))
Next w
Next v
End Sub

Wer weis warum, bzw. kann ich dies einfacher haben?
Danke und Gruss
Xico

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überlauf
28.07.2006 16:05:17
ChrisL
Hallo Xico
Ist tatsaechlich etwas eigenartig. Ich vermute der Fehler tritt dann auf, wenn die angesprochenen Zellen keinen Wert aufweisen resp. 0. Dies ergibt eine Division durch null, was nicht erlaubt ist.
Gruss
Chris
AW: Überlauf
28.07.2006 16:08:21
Hans
Hallo,
ich vermute mal, dass es sich bei einem der Divisoren um einen 0-Wert handelt. In der folgenden verkürzten Form:

Sub RestRein()
Dim v As Integer, w As Integer
For v = 5 To 2085 Step 40
For w = 5 To 16
Cells(v, w + 29).ClearContents
With Worksheets((v - 5) / 40 + 3)
Cells(v, w + 29) = (.Cells(9, w) + .Cells(12, w) - _
.Cells(8, w)) / .Cells(37, w) + .Cells(38, w)
End With
Next w
Next v
End Sub

wäre das "/ .Cells(37, w)"
gruss hans
Anzeige
AW: Überlauf
28.07.2006 16:22:40
Xico
Hallo Hans & Chris,
@Hans: Vielen Dank für die Optimierung, hatte hier im Forum bereits danach gesucht. Jetzt hab ich`s vom Meister persönlich! :)
Ja, am Nullwert liegt`s! (Durch Null ist klar das NoGo, wusste aber nicht, dass der Divisor in VBA auch nicht Null sein darf.)
Werde um eine If... nicht herumkommen. Ich poste zu gegebenem Zeitpunkt das Ergebnis, falls es jemanden interessiert. Oder falls ich hängen bleibe.
Danke und Gruss
Xico
Habe Quatsch geschrieben
28.07.2006 16:32:12
Xico
Hallo,
war eben noch voll mit meiner Exeldatei beschäftigt. Bevor ich mich blamiere: klar, der Divisor darf natürlich nicht Null sein, der Dividend schon.
Gruss
Xico
Anzeige
AW: Habe Quatsch geschrieben
28.07.2006 16:56:09
Xico
Nochmals Hallo,
dafür habe ich das Ergebnis nun erstellt:

Sub RestRein()
Dim v As Integer, w As Integer
Dim Ziel
For v = 5 To 2085 Step 40
For w = 5 To 16
With Worksheets((v - 5) / 40 + 3)
Ziel = (.Cells(37, w) + .Cells(38, w))
End With
Cells(v, w + 29).ClearContents
If Ziel = 0 Then
Cells(v, w + 29) = 0
Else
With Worksheets((v - 5) / 40 + 3)
Cells(v, w + 29) = (.Cells(9, w) + .Cells(12, w) - _
.Cells(8, w)) / (.Cells(37, w) + .Cells(38, w))
End With
End If
Next w
Next v
End Sub

Und es hat gleich auf Anhieb gepaßt! Was wäre nur, wenn es Herber.de nicht gäbe?
Gruss
Xico
Anzeige
AW: Habe Quatsch geschrieben
28.07.2006 17:18:28
ChrisL
hallo
Danke für dein Feedback. Hier noch eine ganz kleine Optimierung:

Sub RestRein()
Dim v As Integer, w As Integer
Dim Ziel As Currency
For v = 5 To 2085 Step 40
For w = 5 To 16
With Worksheets((v - 5) / 40 + 3)
Ziel = .Cells(37, w) + .Cells(38, w)
Cells(v, w + 29).ClearContents
If Ziel = 0 Then
Cells(v, w + 29) = 0
Else
Cells(v, w + 29) = (.Cells(9, w) + .Cells(12, w) - _
.Cells(8, w)) / (.Cells(37, w) + .Cells(38, w))
End If
End With
Next w
Next v
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige