Thema Datum  Von Nutzer Rating
Antwort
Rot Laufzeitfehler 1004: Conways Game of life
15.12.2016 16:59:03 LBE
NotSolved
15.12.2016 17:30:34 Gast65396
Solved
15.12.2016 17:55:11 Gast75581
NotSolved
15.12.2016 17:42:02 GraFri
Solved

Ansicht des Beitrags:
Von:
LBE
Datum:
15.12.2016 16:59:03
Views:
983
Rating: Antwort:
  Ja
Thema:
Laufzeitfehler 1004: Conways Game of life
Moin Moin,

ich bin auf das "Game of Life" von Conway gestoßen und wollte dieses gerne in EXCEL mittels VBA nachbauen. Bisher habe ich den Code im Anhang geschrieben.
Mein derzeitiges Problem ist der Laufzeitfehler 1004. Wenn ich in der Sub ScreenCells die Funktion CountNeighbours aufrufe, bekomme ich diesen Fehler.
Ich kann leider nicht herausfinden woran dieses genau liegt. Wenn ich in der Sub ScreenCells der Variable intNeighbours einen Integer zuweise, dann funktioniert es wie es soll.
Was ist mein Fehler?
Danke vielmals!
VG
LBE

Option Explicit

Sub Life()
  'Dim Test As Integer
  'Test = CountNeighbours(Range("B4"))
  'MsgBox (Test)
  Call ScreenCells
End Sub

Function CountNeighbours(rZelle As Range) As Integer
  Dim iCounter As Integer
  iCounter = 0
  
  If (rZelle.Offset(-1, -1).Interior.ColorIndex = 1) Then ' Nachbar oben links
    iCounter = iCounter + 1
  End If
    
  If (rZelle.Offset(-1, 0).Interior.ColorIndex = 1) Then ' Nachbar oben
    iCounter = iCounter + 1
  End If
  If (rZelle.Offset(-1, 1).Interior.ColorIndex = 1) Then  ' Nachbar oben rechts
    iCounter = iCounter + 1
  End If
  If (rZelle.Offset(0, -1).Interior.ColorIndex = 1) Then 'Nachbar links
    iCounter = iCounter + 1
  End If
  If (rZelle.Offset(0, 1).Interior.ColorIndex = 1) Then  'Nachbar rechts
    iCounter = iCounter + 1
  End If
  If (rZelle.Offset(1, 0).Interior.ColorIndex = 1) Then 'Nachbar unten links
    iCounter = iCounter + 1
  End If
  If (rZelle.Offset(-1, -1).Interior.ColorIndex = 1) Then 'Nachbar unten
    iCounter = iCounter + 1
  End If
  If (rZelle.Offset(-1, -1).Interior.ColorIndex = 1) Then  'Nachbar unten rechts
    iCounter = iCounter + 1
  End If
  CountNeighbours = iCounter
  
End Function

Sub ScreenCells()
  Dim Zelle As Object
  Dim intNachbarn As Integer
  
  For Each Zelle In Worksheets(1).Range("A1:Z22")
    intNachbarn = CountNeighbours(Zelle)
    ' Lebende Zelle <2 oder >3 stirbt nächste Runde
    If (((intNachbarn < 2) Or (intNachbarn > 3)) And (Zelle.Interior.ColorIndex = 1)) Then
      Worksheets(2).Cells(Zelle.Row, Zelle.Column).Interior.ColorIndex = 2
    End If
    ' Lebende Zelle lebt weiter bei Nachbarn =2 oder = 3
    If (((intNachbarn = 2) Or (intNachbarn = 3)) And (Zelle.Interior.ColorIndex = 1)) Then
      Worksheets(2).Cells(Zelle.Row, Zelle.Column).Interior.ColorIndex = 1
    End If
    ' Tote Zelle werden bei Nachbarn = 3 naechste Gen lebendig
    If (intNachbarn = 3 And Zelle.Interior.ColorIndex = 2) Then
      Worksheets(2).Cells(Zelle.Row, Zelle.Column).Interior.ColorIndex = 1
    End If
    
  Next
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Laufzeitfehler 1004: Conways Game of life
15.12.2016 16:59:03 LBE
NotSolved
15.12.2016 17:30:34 Gast65396
Solved
15.12.2016 17:55:11 Gast75581
NotSolved
15.12.2016 17:42:02 GraFri
Solved