Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
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

Spalten Durchlauf Problem

Spalten Durchlauf Problem
22.10.2021 14:57:46
Mo
Hallo,
ich habe folgendes Problem. Ich möchte hier die Spalte H in Arbeitsblatt Daten nach Stichwörtern durchsuchen und dann alle Zellen mit dem Stichwort, im selben Durchlauf, mit der passenden Formel berechnen. Mein Code startet einen neuen Durchlauf jedoch immer direkt nach dem ersten Fund. Dadurch ändern sich aber die Werte mit denen gerechnet wird. Das soll erst geschehen, wenn H einmal komplett durchsucht wurde und alle Treffer berechnet wurden.
Kann mir hier vielleicht jemanden helfen den Code so umzuschreiben, dass H immer erst komplett durchlaufen wird?

Sub BrennstofkostenDurchlauf()
'Variablen definieren
Dim anzR As Double
Dim iBrennstoffkosten As Double
Dim ZelleAktuell As String
Dim ZelleErgebnis As String
With Worksheets("Daten")
anzR = .Cells(.Rows.Count, 1).End(xlUp).Row
For iBrennstoffkosten = 2 To anzR
ZelleAktuell = "H" & iBrennstoffkosten
Range(ZelleAktuell).Select
ZelleErgebnis = "O" & iBrennstoffkosten
'Berechnet Brennstoffkosten nach Brennstoffart Formel: Brennstoffkostenel = (Brennstoffkosten + Transportkosten) / Effizienz
If ActiveCell.Value = "SK" Then
Range(ZelleErgebnis).Value = (Worksheets("Input Daten").Cells(iBrennstoffkosten, 5) + Worksheets("Input Daten").Cells(iBrennstoffkosten, 11)) / Worksheets("Daten").Cells(iBrennstoffkosten, 13)
ElseIf ActiveCell.Value = "BK" Then
Range(ZelleErgebnis).Value = (Worksheets("Input Daten").Cells(iBrennstoffkosten, 6) + Worksheets("Input Daten").Cells(iBrennstoffkosten, 12)) / Worksheets("Daten").Cells(iBrennstoffkosten, 13)
ElseIf ActiveCell.Value = "EG" Then
Range(ZelleErgebnis).Value = (Worksheets("Input Daten").Cells(iBrennstoffkosten, 7) + Worksheets("Input Daten").Cells(iBrennstoffkosten, 13)) / Worksheets("Daten").Cells(iBrennstoffkosten, 13)
ElseIf ActiveCell.Value = "KG" Then
Range(ZelleErgebnis).Value = (Worksheets("Input Daten").Cells(iBrennstoffkosten, 8) + Worksheets("Input Daten").Cells(iBrennstoffkosten, 14)) / Worksheets("Daten").Cells(iBrennstoffkosten, 13)
ElseIf ActiveCell.Value = "MÖ" Then
Range(ZelleErgebnis).Value = (Worksheets("Input Daten").Cells(iBrennstoffkosten, 9) + Worksheets("Input Daten").Cells(iBrennstoffkosten, 15)) / Worksheets("Daten").Cells(iBrennstoffkosten, 13)
End If
Next iBrennstoffkosten
End With
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten Durchlauf Problem
22.10.2021 17:02:19
Yal
Hallo Mo,
es liegt wahrtscheinlich daran, dass die Sub BrennstofkostenDurchlauf von einem Ereignis Worksheet_Change aufgerufen wird. Bei der Berechnung wird eine Wert in einer Zelle geschrieben, was das Ereignis nochmal auflöst.
Füge in der aufrufende Procedure am Anfang einen
Application.EnableEvents = False
und am Ende einen
Application.EnableEvents = True
Folgende Sub macht genau dasselbe wie dein Sub. Ist nur leicht "abgespeckt" worden.
Es ist bei der Behandlung nicht klar in welchem Worksheet (=Activesheet) man sich gerade befindet. Das Rückschreiben findet in der Activesheet statt.

Sub BrennstofkostenDurchlauf()
Dim MemEvents
Dim Ein As Worksheet, Dat As Worksheet
Dim Z As Range, B As Integer, T As Integer
MemEvents = Application.EnableEvents
Application.EnableEvents = False
Set Dat = Worksheets("Daten")
Set Ein = Worksheets("Input Daten")
For Each Z In Dat.Range(Dat.Range("H2"), Dat.Range("H99999").End(xlUp)).Cells
Select Case Z.Value
Case "SK": B = 5: T = 11
Case "BK": B = 6: T = 12
Case "EG": B = 7: T = 13
Case "KG": B = 8: T = 14
Case "MÖ": B = 9: T = 15
Case Else: B = 999: T = 999 'Ergebnis wird dann null sein.
End Select
Cells(Z.Row, "O") = (Ein.Cells(Z.Row, B) + Ein.Cells(Z.Row, T)) / Dat.Cells(Z.Row, 13)
Next
Application.EnableEvents = MemEvents
End Sub
VG
Yal
Anzeige
AW: Spalten Durchlauf Problem
22.10.2021 17:26:51
Mo
Hey Yal,
vielen Dank für deine schnelle Antwort. Leider hat nur das Einfügen der Application.Events nichts den gewünschten Effekt gehabt. Habs dann mal mit deinem Code ausprobiert, da war das Ergebnis dann aber immer 0,00 - also auch nicht richtig. Ich weiß nicht woran es liegt, vielleicht habe ich es auch einfach nur falsch eingesetzt.
In der Zwischenzeit war ich aber nicht untätig und habe eine lösung gefunden. Ich habe eine weitere (innere) Schleife deffiniert die ich für alle Daten, die aus Worksheet("Daten") genommen werden einsetze. "Brennstoffkosten" ist jetzt die äußere Schleife.
Anzeige
AW: Spalten Durchlauf Problem
22.10.2021 18:52:13
Mo
Hey Yal,
vielen Dank für deine schnelle Antwort. Leider hat nur das Einfügen der Application.Events nichts den gewünschten Effekt gehabt. Habs dann mal mit deinem Code ausprobiert, da war das Ergebnis dann aber immer 0,00 - also auch nicht richtig. Ich weiß nicht woran es liegt, vielleicht habe ich es auch einfach nur falsch eingesetzt.
In der Zwischenzeit war ich aber nicht untätig und habe eine lösung gefunden. Ich habe eine weitere (innere) Schleife deffiniert die ich für alle Daten, die aus Worksheet("Daten") genommen werden einsetze. "Brennstoffkosten" ist jetzt die äußere Schleife.
Anzeige
AW: Spalten Durchlauf Problem
22.10.2021 22:50:14
Yal
Hallo Mo,
wenn alle Rechnungen null ergeben, dann trifft den Fall "Case Else": der Werte in Spalte ist null, daher Ergebnis null.
Wenn Du den Code im Schritt-Modus laufen lässt, spricht Haltepunkt setzen (F9) und danach Schritt (F8) kann Du im Lokal-Fenster die Variablen und ihre momentane Wert sehen.
Alles weiteres ist nur mit einem aussagefähige Datei möglich.
VG
Yal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige