Дата: Воскресенье, 22.12.2013, 23:03 |
Сообщение № 1
Группа: Гости
Здравствуйте, подскажите пожалуйста, как решить задачу: мне нужно создать гирлянду из 14 ячеек первой строки так, чтобы каждый цвет задерживался на3 секунды. Я стараюсь написать хотя бы просто изменение цветов, но excel выдает ошибку, однако я никак не могу понять, почему. вот мои потуги) [vba]
Код
For s = 0 To 256 Do Until s = 256 For t = 1 To 14 If t <= 14 Then Cells(1, t + 1).colourindex = 8 + s t = t + 1 Else s = s + 1 Exit Do End If Loop
[/vba]
Здравствуйте, подскажите пожалуйста, как решить задачу: мне нужно создать гирлянду из 14 ячеек первой строки так, чтобы каждый цвет задерживался на3 секунды. Я стараюсь написать хотя бы просто изменение цветов, но excel выдает ошибку, однако я никак не могу понять, почему. вот мои потуги) [vba]
Код
For s = 0 To 256 Do Until s = 256 For t = 1 To 14 If t <= 14 Then Cells(1, t + 1).colourindex = 8 + s t = t + 1 Else s = s + 1 Exit Do End If Loop
Дата: Понедельник, 23.12.2013, 00:02 |
Сообщение № 2
Группа: Гости
[vba]
Код
Dim sdvig As Integer, rasmer As Integer, vysota As Integer, kol As Integer, sh() Private Sub Form_load() Form1.ScaleMode = 3: AutoRedraw = True: DrawWidth = 3 sdvig = 70: rasmer = 50: vysota = 100: kol = 11 Me.Width = (sdvig / 2 + rasmer) * (kol) * VB.Screen.TwipsPerPixelX ReDim sh(0 To kol) For i = 0 To kol Set sh(i) = Controls.Add("VB.Shape", "sh" & "i" & i, Form1) sh(i).Top = vysota: sh(i).Left = i * sdvig + rasmer sh(i).Width = rasmer: sh(i).Height = rasmer sh(i).BackStyle = 1: sh(i).BorderStyle = 0 sh(i).BackColor = 0 sh(i).Shape = 3 sh(i).Visible = True Next i For i = 0 To kol - 1 Circle (i * sdvig + rasmer / 2 + sdvig / 2 + rasmer, vysota), sdvig / 2, , 0, 3.2, 0.5 Next i
End Sub Private Sub Form_Click() For i = 0 To kol If i <= kol \ 2 Then sh(i).BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) Else sh(i).BackColor = 0 End If Next i End Sub Private Sub Form_DblClick() For i = 0 To kol If i > kol \ 2 Then sh(i).BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) Else sh(i).BackColor = 0 End If Next i End Sub
[/vba] вот что я еще придумала, но куда здесь сунуть таймер, я вообще не знаю
[vba]
Код
Dim sdvig As Integer, rasmer As Integer, vysota As Integer, kol As Integer, sh() Private Sub Form_load() Form1.ScaleMode = 3: AutoRedraw = True: DrawWidth = 3 sdvig = 70: rasmer = 50: vysota = 100: kol = 11 Me.Width = (sdvig / 2 + rasmer) * (kol) * VB.Screen.TwipsPerPixelX ReDim sh(0 To kol) For i = 0 To kol Set sh(i) = Controls.Add("VB.Shape", "sh" & "i" & i, Form1) sh(i).Top = vysota: sh(i).Left = i * sdvig + rasmer sh(i).Width = rasmer: sh(i).Height = rasmer sh(i).BackStyle = 1: sh(i).BorderStyle = 0 sh(i).BackColor = 0 sh(i).Shape = 3 sh(i).Visible = True Next i For i = 0 To kol - 1 Circle (i * sdvig + rasmer / 2 + sdvig / 2 + rasmer, vysota), sdvig / 2, , 0, 3.2, 0.5 Next i
End Sub Private Sub Form_Click() For i = 0 To kol If i <= kol \ 2 Then sh(i).BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) Else sh(i).BackColor = 0 End If Next i End Sub Private Sub Form_DblClick() For i = 0 To kol If i > kol \ 2 Then sh(i).BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) Else sh(i).BackColor = 0 End If Next i End Sub
[/vba] вот что я еще придумала, но куда здесь сунуть таймер, я вообще не знаюИрина
nColorIndex = 0 Do ' сдвигаем 13 ячеек первой строки вправо на одну Cells(1, 1).Resize(, 13).Copy Cells(1, 1).Offset(, 1) ' рассчитываем новый цвет nColorIndex = (nColorIndex + 1) Mod 57 ' заносим цвет в первую ячейку Cells(1, 1).Interior.ColorIndex = nColorIndex ' ждем по времени (разрешив остальные события) t = Timer Do While (Timer - t) <= 3 ' секунды DoEvents Loop Loop ' Until press any formal key - тыркните любую значимую клавишу, букву там, или цифру...
End Sub
[/vba][sub]
Ещё вариант... [vba]
Код
Sub testColors()
' очищаем место [a1].Resize(1, 14).Clear
nColorIndex = 0 Do ' сдвигаем 13 ячеек первой строки вправо на одну Cells(1, 1).Resize(, 13).Copy Cells(1, 1).Offset(, 1) ' рассчитываем новый цвет nColorIndex = (nColorIndex + 1) Mod 57 ' заносим цвет в первую ячейку Cells(1, 1).Interior.ColorIndex = nColorIndex ' ждем по времени (разрешив остальные события) t = Timer Do While (Timer - t) <= 3 ' секунды DoEvents Loop Loop ' Until press any formal key - тыркните любую значимую клавишу, букву там, или цифру...