Ĺadny brzuch
Witam.
W szkole na zajęciach z Excela próbowaliśmy naskrobać grę w VBA. Cały kod jest z książki - nie wiem niestety jakiej. Gra miała polegać na losowym ułożeniu liter w komórkach A1:D4. Potem należało dodać przycisk START i RUSZAJ i przypisać do nich makro.
Podczas próby uruchomienia wyskakuje:
Compile error:
Next without For
Bąd w 6 lini od dołu ;)
Next j
Może ktoś z Was "przerabiał" akurat taki materiał lub po prostu wie jak to odpalić ;)
Kod źródłowy (błędny ;) ) poniżej:
Option Explicit Dim ii As Integer Dim jj As Integer Dim i As Integer Dim j As Integer Dim k As Integer Dim p(15) As String * 1 Dim koniec As Boolean Sub startuj() Dim tmp As String * 1 If MsgBox("Zaczynamy..?", 292, "Nowa gra...?") <> 6 Then Exit Sub p(0) = " " For i = 1 To 15 p(i) = Chr(64 + i) Next i Randomize For k = 1 To 18 i = Int(16 * Rnd()) j = Int(16 * Rnd()) tmp = p(i) p(i) = p(j) p(j) = tmp Next k k = 0 For j = 1 To 4 For i = 1 To 4 Cells(j, i).Value = p(k) If p(k) = " " Then ii = i jj = i End If k = k + 1 Next i Next j Cells(jj, ii).Select End Sub Sub ruszaj() j = ActiveCell.Row i = ActiveCell.Column If (i > 4) Or (j > 4) Or ((i = ii) And (j = jj)) Or ((i <> ii) And (j <> jj)) Then Exit Sub If j = jj Then If i > ii Then For k = ii To i - 1 Cells(jj, k).Value = Cells(jj, k + 1).Value Next k Cells(jj, k).Value = " " Else If i < ii Then For k = ii To i + 1 Step -1 Cells(jj, k).Value = Cells(jj, k - 1).Value Next k Cells(jj, k).Value = " " End If End If Else If j > jj Then For k = jj To j - 1 Cells(k, ii).Value = Cells(k + 1, ii).Value Next k Cells(k, ii).Value = " " Else If j < jj Then For k = jj To j + 1 Step -1 Cells(k, ii).Value = Cells(k - 1, ii).Value Next k Cells(k, ii).Value = " " End If End If End If ii = i jj = j koniec = True For i = 1 To 4 For j = 1 To 4 If (i * j < 16) And (Cells(i, j).Value <> Chr(j + 4 * i + 60)) Then koniec = False Next j Next i If koniec Then If MsgBox("to dopiero: " + Times$() + Chr(13) + "zagraj sobie jeszcze raz...", 64, "GRATULACJE..!") Then Exit Sub End Sub
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
W szkole na zajęciach z Excela próbowaliśmy naskrobać grę w VBA. Cały kod jest z książki - nie wiem niestety jakiej. Gra miała polegać na losowym ułożeniu liter w komórkach A1:D4. Potem należało dodać przycisk START i RUSZAJ i przypisać do nich makro.
Podczas próby uruchomienia wyskakuje:
Compile error:
Next without For
Bąd w 6 lini od dołu ;)
Next j
Może ktoś z Was "przerabiał" akurat taki materiał lub po prostu wie jak to odpalić ;)
Kod źródłowy (błędny ;) ) poniżej:
Option Explicit Dim ii As Integer Dim jj As Integer Dim i As Integer Dim j As Integer Dim k As Integer Dim p(15) As String * 1 Dim koniec As Boolean Sub startuj() Dim tmp As String * 1 If MsgBox("Zaczynamy..?", 292, "Nowa gra...?") <> 6 Then Exit Sub p(0) = " " For i = 1 To 15 p(i) = Chr(64 + i) Next i Randomize For k = 1 To 18 i = Int(16 * Rnd()) j = Int(16 * Rnd()) tmp = p(i) p(i) = p(j) p(j) = tmp Next k k = 0 For j = 1 To 4 For i = 1 To 4 Cells(j, i).Value = p(k) If p(k) = " " Then ii = i jj = i End If k = k + 1 Next i Next j Cells(jj, ii).Select End Sub Sub ruszaj() j = ActiveCell.Row i = ActiveCell.Column If (i > 4) Or (j > 4) Or ((i = ii) And (j = jj)) Or ((i <> ii) And (j <> jj)) Then Exit Sub If j = jj Then If i > ii Then For k = ii To i - 1 Cells(jj, k).Value = Cells(jj, k + 1).Value Next k Cells(jj, k).Value = " " Else If i < ii Then For k = ii To i + 1 Step -1 Cells(jj, k).Value = Cells(jj, k - 1).Value Next k Cells(jj, k).Value = " " End If End If Else If j > jj Then For k = jj To j - 1 Cells(k, ii).Value = Cells(k + 1, ii).Value Next k Cells(k, ii).Value = " " Else If j < jj Then For k = jj To j + 1 Step -1 Cells(k, ii).Value = Cells(k - 1, ii).Value Next k Cells(k, ii).Value = " " End If End If End If ii = i jj = j koniec = True For i = 1 To 4 For j = 1 To 4 If (i * j < 16) And (Cells(i, j).Value <> Chr(j + 4 * i + 60)) Then koniec = False Next j Next i If koniec Then If MsgBox("to dopiero: " + Times$() + Chr(13) + "zagraj sobie jeszcze raz...", 64, "GRATULACJE..!") Then Exit Sub End Sub