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

Fehler im Makro

Fehler im Makro
23.04.2023 13:48:05
Fred


Hallo Excel Profis,
Ich möchte aus den ersten 2 Spielen die Treffer des Teams auslesen, welches in einer Liste angegeben ist.
Sheet "Listen", Spalte "A" stehen die Teams
Sheet "Import", stehen die Spiele, Spalten G, H, J, K = Heimteam, Gastteam, Heimtreffer, Gasttreffer
soweit bin ich im Makro bisher gekommen:

Dim listenSheet As Worksheet
Dim importSheet As Worksheet
Dim listenRange As Range
Dim importRange As Range
Dim listenCell As Range
Dim importCell As Range
Dim count As Integer
Dim summeJ As Integer
Dim summeK As Integer

Set listenSheet = ThisWorkbook.Worksheets("Listen")
Set importSheet = ThisWorkbook.Worksheets("Import")
Set listenRange = listenSheet.Range("A:A").SpecialCells(xlCellTypeConstants)
Set importRange = importSheet.Range("G:H").SpecialCells(xlCellTypeConstants)

For Each listenCell In listenRange
count = 0
summeJ = 0
summeK = 0
For Each importCell In importRange
    If importCell = listenCell Or importCell.Offset(0, 1) = listenCell Then
        count = count + 1
        
        If importCell = listenCell Then
            summeJ = summeJ + importSheet.Cells(importCell.Row, "J")
        End If
        
        If importCell.Offset(0, 1) = listenCell Then
            summeK = summeK + importSheet.Cells(importCell.Row, "K")
        End If
    End If
    
    If count = 2 Then
        listenCell.Offset(0, 1).Value = summeJ + summeK
        Exit For
    End If
Next importCell
Next listenCell

End Sub

Das bisherige Makro zählt anscheinend dann die erzielten Treffer korrekt, wenn die gesuchte Mannschaft als erster gefundener Eintrag eine Heimmannschaft (Spalte "G") ist. Ist es eine Auswärtsmannschaft (Spalte "H"), wird falsch angezeigt.
Kann ein Experte bitte mal auf das Beispiel-Sheet schauen:
https://www.herber.de/bbs/user/158844.xlsb
.. und mich bitte auf den Fehler aufmerksam machen.

Gruss
Fred

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler im Makro
23.04.2023 14:50:49
GerdL
Hallo Fred,

teste mal mit dieser Ergänzung:
For Each importCell In importRange.Colums(1).Cells

Gruß Gerd


AW: Fehler im Makro
23.04.2023 15:03:09
Fred
Hallo Gerd,
dann kommt die Meldung, Laufzeitfehler 438, Objekt unterstützt diese Methode oder Eigenschaft nicht
:-(


AW: Fehler im Makro
23.04.2023 15:44:39
GerdL
Hllo Fred!

Hmm,

dann nimm mal einen konstanten Bereich bei der Zuweisung für ImpotRange, z.B G2:K100 .

Gruß Gerd


AW: Fehler im Makro
23.04.2023 15:59:55
Fred
Hallo Gerd,
keine Fehlermeldung, aber immer noch falsche Summierung.
Ich habe mal Makro geändert:
Sub summeTreffer()
    'zählt eigenen zuHause, auswärts Treffer
    Dim listenSheet As Worksheet
    Dim importSheet As Worksheet
    Dim listenRange As Range
    Dim importRange As Range
    Dim listenCell As Range
    Dim importCell As Range
    Dim count As Integer
    Dim summeJ As Long
    Dim summeK As Integer
    
    Set listenSheet = ThisWorkbook.Worksheets("Listen")
    Set importSheet = ThisWorkbook.Worksheets("Import")
    Set listenRange = listenSheet.Range("A:A").SpecialCells(xlCellTypeConstants)
    Set importRange = importSheet.Range("G:H").SpecialCells(xlCellTypeConstants)
    
    For Each listenCell In listenRange
        count = 0
        summeJ = 0
        summeK = 0
        For Each importCell In importRange
            If importCell = listenCell Or importCell.Offset(0, 1) = listenCell Then
                count = count + 1
                
                If importCell = listenCell Then
                    summeJ = summeJ + CLng(importSheet.Cells(importCell.Row, "G").Value)
                ElseIf importCell.Offset(0, 1) = listenCell Then
                    summeJ = summeJ + CLng(importSheet.Cells(importCell.Row, "H").Value)
                End If
                
                If importCell.Offset(0, 1) = listenCell Then
                    summeK = summeK + importSheet.Cells(importCell.Row, "I")
                ElseIf importCell = listenCell Then
                    summeK = summeK + importSheet.Cells(importCell.Row, "J")
                End If
            End If
            
            If count = 2 Then
                listenCell.Offset(0, 1).Value = summeJ + summeK
                Exit For
            End If
        Next importCell
    Next listenCell
    
End Sub

nun aber Fehler: 13, Typen unverträglich
summeJ = summeJ + CLng(importSheet.Cells(importCell.Row, "G").Value)


Anzeige
AW: Fehler im Makro
23.04.2023 16:38:21
GerdL
Hast du jetzt vier Trefferspaten?


AW: Fehler im Makro
23.04.2023 16:42:41
Fred
Gerd,
Nö :-)
war ein Versuch.
Im Moment habe ich wohl (mal wieder) so eine geistige Blockade. Zudem finde ich es echt frustrierend, das ich bei solchen Basic's schon versage,- was ist wenn ich "kompliziertere" Berechnungen umsetzen möchte,- anstatt "einfaches summieren".


AW: Fehler im Makro
23.04.2023 18:13:21
Rolf
Hallo Fred,

teste mal:
For Each listenCell In listenRange
count = 0
summeEigen = 0
summeGegen = 0
For Each importCell In importRange
If importCell = listenCell Then
count = count + 1
summeEigen = summeEigen + importCell.Offset(0, 3)
If importCell.Column = 7 Then
summeGegen = summeGegen + importCell.Offset(0, 4)
Else
summeGegen = summeGegen + importCell.Offset(0, 2)
End If
End If
If count = 2 Then
listenCell.Offset(0, 1).Value = summeEigen
listenCell.Offset(0, 2).Value = summeGegen
Exit For
End If
Next importCell
Next listenCell

Gruß Rolf


Anzeige
AW: Fehler im Makro
23.04.2023 18:46:13
Fred
Hallo Rolf,
ich hatte mich zuvor 1 Stunde mal hingelegt um an neue Kräfte zu galangen ....
Deine Korrektur macht genau das, was ich von anfang an wollte (sogar mit GegenTreffer)
Vielen Dank für deine Aufmerksamkeit und Kompetenz!
Nun will ich das ja auch verstehen .... werde den Code Stück für Stück durchgehen
Wollte dir aber zuvor noch schnelle Antworten und mich bedanken.

Gruss
Fred


AW: Gerne
23.04.2023 19:16:38
Rolf
Hallo Fred,

ist gar nicht so schwer zu verstehen ;-)
Die Schleifen sind wie bei Dir,
wenn ein Treffer, dann sind die eigenen Tore immer offset(0,3)
Die Gegentore sind abhängig von der Trefferspalte.
Wenn Heim(Spalte7), dann offset(0,4), ansonsten(auswärts=Spalte8) ist es offset(0,2)
Tore aufaddieren und zum Schluss ausgeben. Fertig

Gruß Rolf

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige