2016-07-22 31 views
0

Mein Problem ist, das wie folgt:Wie kann ich die Nummern in der Reihenfolge suchen?

  • Ich habe 3 Spalten und 20 Zeilen, die Zahlen enthält.
  • Es gibt eine Zeile mit Zahlen zwischen 1 bis 20 in der Reihenfolge Crescente, die anderen Zellen enthält größere Zahlen als 100 oder was auch immer.

Meine Hausaufgaben ist, dass ich ein VBA-Code zu schreiben, die Farbe, um die Zellen zu füllen, die die Zeile enthält. Auf diese Weise werde ich eine "bunte Schlange" aus den Zellen haben, die die Zahlen zwischen 1 bis 20 enthält.

  • Natürlich ist die Startnummer Zelle „A1“
  • die Endung Zelle kann überall sein im Bereich „A1: C20“
  • die Substanz die gefärbten Zellen, die Zahlen, um folgen müssen Anwesenheit!

enter image description here

+1

Willkommen Überlauf zu stapeln :-) schauen Sie [fragen] und wie ein [MCVE] zu erstellen. Dies wird helfen, nützliche Antworten zu erhalten. "Bitte geben Sie mir Code, damit ich meine Hausaufgaben machen kann" ist nicht die Art, wie diese Plattform funktioniert. Ich möchte Hilfe bekommen, du musst deine eigenen Bemühungen zeigen. – JimHawkins

+0

Sie sollten mit [Auswahl von Zellen (Bereich, Zellen, Aktive Zelle, Ende, Offset)] beginnen (https://www.youtube.com/watch?v=c8reU-H1PKQ&index=5&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5). Sie sollten bis zum Ende des Videos alle Zellen durchlaufen können. Wenn du nicht weiterkommst, poste deinen Code und du bekommst jede Menge Hilfe. –

+0

_ "die Substanz ist die farbigen Zellen müssen die Zahlen in Reihenfolge Reihenfolge haben!" _: Ich denke, das eigentliche Ziel Ihrer Hausaufgaben ist, dass Sie über diesen Satz, nämlich seinen letzten Teil denken. Nachdem Sie dieses Problem gelöst hatten, konnten Sie auf eine effektivere Weise codieren – user3598756

Antwort

0
Sub MeykEhYewowSnakhey() 
     Dim r, c 
     Dim ws As Worksheet 
     Set ws = ThisWorkbook.Worksheets(1) 
     For r = 1 To ws.UsedRange.Rows.Count 
      For c = 1 To ws.UsedRange.Columns.Count 
       If ws.Cells(r, c).Value < 100 Then 
        ws.Cells(r, c).Interior.ColorIndex = 6 
       End If 
      Next 
     Next 
    End Sub 

bereit.

+0

Das OP erklärte, dass die Zellen in 'Range (" A1: C20 ")' waren. Sie haben keine Möglichkeit zu wissen, was der eigentliche UsedRange ist. Sie sollten auch Werte zwischen 1 und 20 festlegen. Wenn das Arbeitsblatt wie das Bild eingerichtet wird, würde Ihr Code jede leere Zelle aus 'A1: G17' färben. –

0

Es gibt wahrscheinlich einen viel effizienteren Weg, dies zu lösen, aber das ist meine Lösung.

Sub Snake() 
    Dim wbk As Workbook 
    Dim ws As Worksheet 
    Dim mySnake As Integer, x As Integer, y As Integer 

    Set wbk = Workbooks("Book1.xlsm") 
    Set ws = wbk.Worksheets("Sheet1") 
    x = 1 
    y = 1 
    With ws 
     For mySnake = 1 To 20 
      If .Cells(x, y) = mySnake Then 
       .Cells(x, y).Interior.Color = vbYellow 
       'Check cell below 
       If .Cells(x + 1, y) = mySnake + 1 Then 
        x = x + 1 
       'Check cell to right 
       ElseIf .Cells(x, y + 1) = mySnake + 1 Then 
        y = y + 1 
       'Check cells to left if y <> 1 
       ElseIf y <> 1 Then 
        If .Cells(x, y - 1) = mySnake + 1 Then 
         y = y - 1 
        End If 
       'Check cells above if x <> 1 
       ElseIf x <> 1 Then 
        If .Cells(x - 1, y) = mySnake + 1 Then 
         x = x - 1 
        End If 
       End If 
      End If 
     Next mySnake 
    End With 
End Sub