tuan_anhbm
Thành viên thường trực




- Tham gia
- 16/7/09
- Bài viết
- 253
- Được thích
- 1,605
Biểu diển thì hay nhưng mà xem code thì thấy... lằng nhằng quá ---> Còn phải rút gọn và cải tiến thêm rất nhiềuGửi các bạn file này tham khảo và thư giãn cho vui.
Thầy NDU thấy chưa được chỗ nào xin làm ơn chỉ giáo, đó cũng là mục đích khi posst bài của tôi mà. Còn "mấy cái Select và Selection" - ấy là do tôi muốn con trỏ chuột nó chạy lòng vòng chút cho thêm phần "khí thế".Biểu diển thì hay nhưng mà xem code thì thấy... lằng nhằng quá ---> Còn phải rút gọn và cải tiến thêm rất nhiều
(chỉ nội mấy cái Select và Selection thôi cũng đủ mất thời gian)
Lấy ví dụ việc kẽ khung vòng quanh, tôi chỉ cần thế này là đủThầy NDU thấy chưa được chỗ nào xin làm ơn chỉ giáo, đó cũng là mục đích khi posst bài của tôi mà. Còn "mấy cái Select và Selection" - ấy là do tôi muốn con trỏ chuột nó chạy lòng vòng chút cho thêm phần "khí thế".
Thanks.
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
Sub ToMau()
Dim i As Long, iR As Long, iC As Long
Range("A:AY").Clear
For i = 1 To 118
With Range("A1").Offset(iR, iC)
.Select: .Interior.ColorIndex = 8 - 4 * (i Mod 2)
End With
Select Case i
Case i = 1 To 50: iC = iC + 1
Case i = 51 To 59: iR = iR + 1
Case i = 60 To 109: iC = iC - 1
Case i = 109 To 118: iR = iR - 1
End Select
Sleep 20
Next i
End Sub
Private Sub Enframe()
Dim i As Long, iR As Long, iC As Long
Range("A:AY").Clear
For i = 1 To 118
With Range("A1").Offset(iR, iC)
.Select: .Interior.ColorIndex = 8 - 4 * (i Mod 2)
End With
Select Case i
Case i = 1 To 50: iC = iC + 1
Case i = 51 To 59: iR = iR + 1
Case i = 60 To 109: iC = iC - 1
Case i = 109 To 118: iR = iR - 1
End Select
DoEvents
Sleep 20
Next i
End Sub
Private Sub TypeLetter()
Dim Clls As Range
Set ForeRng = Union([C3:E3], [D4:D7], [C8:E8], [I3:I8], [J8:L8], [N3:N8], [O3:P3], [Q3:Q8], _
[O8:P8], [S3:S6], [T7], [U8], [V3:V7], [X3:X8], [Y3:AA3], [Y5:AA5], [Y8:AA8], _
[AE3:AE5], [AF5:AG5], [AH3:AH8], [AE8:AG8], [AJ3:AJ8], [AK3:AL3], _
[AM3:AM8], [AK8:AL8], [AO3:AO8], [AR3:AR8], [AP8:AQ8], [AV3:AV6], [AV8])
For Each Clls In ForeRng
Clls.Select: Clls.Interior.ColorIndex = 10
DoEvents
Sleep 30
Next
End Sub
Private Sub Elastic()
Dim i As Long
For i = 1 To 28
With Rows("2:9")
.RowHeight = .RowHeight + IIf(i < 15, -1, 1)
End With
DoEvents
Sleep 100
Next
End Sub
Private Sub FlashCell()
Dim i As Long, j As Long
Set BackRng = Range("B2:AX9")
For i = 1 To 2
For j = 1 To 6
BackRng.Interior.ColorIndex = -(i = 2) * (j Mod 2) * 36
ForeRng.Interior.ColorIndex = 10 + ((j Mod 2) * 36) * (i Mod 2)
Sleep 500
DoEvents
Next j
Next i
End Sub
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
Private ForeRng As Range, BackRng As Range
Sub Auto_Open()
Enframe
TypeLetter
Sleep 1000
Enframe
TypeLetter
Sleep 1000
Elastic
Elastic
Sleep 1000
FlashCell
Set ForeRng = Nothing: Set BackRng = Nothing
End Sub
- Vào menu Tools\Macro\Security và check vào mục "Mediium…"hay wa di ma sao may cua em ko xem dc vay cac bac
[/FONT][/COLOR]
[COLOR=black][FONT=Tahoma]Private Sub Enframe()
Dim i As Long, iR As Long, iC As Long
Range("A:AY").Clear
For i = 1 To 118
With Range("A1").Offset(iR, iC)
.Select: .Interior.ColorIndex = 8 - 4 * (i Mod 2)
End With
Select Case i
Case i = 1 To 50: iC = iC + 1
Case i = 51 To 59: iR = iR + 1
Case i = 60 To 109: iC = iC - 1
Private Sub DrawText(TextRng As Range, Color As Long)
Dim Clls As Range
On Error GoTo ExitSub
For Each Clls In TextRng
Clls.Select: Clls.Interior.ColorIndex = Color
DoEvents
Sleep 30
Next
ExitSub:
Ws.Range("CJ17").Select
End Sub
Private Sub Flicker(FlRng As Range, Color1 As Long, Color2 As Long, iTime As Long)
Dim i As Long
On Error GoTo ExitSub
For i = 1 To iTime
FlRng.Interior.ColorIndex = IIf(i Mod 2, Color1, Color2)
Sleep 500
DoEvents
Next i
ExitSub:
End Sub
Private Sub Dream(TextRng As Range, Color As Long)
Dim i As Long, n As Long, Arr, Clls As Range
On Error GoTo ExitSub
With CreateObject("Scripting.Dictionary")
For Each Clls In TextRng
.Add Clls.Address, ""
Next
Arr = .Keys
End With
With CreateObject("Scripting.Dictionary")
Do
Randomize
n = Int(Rnd * (UBound(Arr) + 1))
If Not .Exists(Arr(n)) Then
BorRng3.Interior.ColorIndex = 4 '<--- Khuyen mai them
BorRng1.Offset(, i Mod 3).Interior.ColorIndex = 6 '<--- Khuyen mai them
BorRng2.Offset(i Mod 3).Interior.ColorIndex = 6 '<--- Khuyen mai them
BorRng1.Offset(9, 3 - (i Mod 3)).Interior.ColorIndex = 6 '<--- Khuyen mai them
BorRng2.Offset(3 - (i Mod 3), -51).Interior.ColorIndex = 6 '<--- Khuyen mai them
i = i + 1 ' Ec... Ec...
.Add Arr(n), ""
With Ws.Range(Arr(n))
.Select: .Interior.ColorIndex = Color
End With
Sleep 50
End If
DoEvents
Loop Until UBound(Arr) + 1 = .Count
End With
ExitSub:
Ws.Range("CJ17").Select
End Sub
Private Sub Wave(FRng As Range, FColor As Long, BRng As Range, BColor As Long)
Dim i As Long, j As Long, n() As Byte
ReDim n(1 To FRng.Count)
On Error Resume Next
For i = 1 To 7 + FRng.Count
BRng.Interior.ColorIndex = BColor
For j = 1 To FRng.Count
n(j) = n(j) + IIf(i > j - 1 And i < 4 + j, 1, -1)
Intersect(BRng, Ws.Range(FRng(j)).Offset(-n(j))).Interior.ColorIndex = FColor
Next j
Sleep 50
DoEvents
Next i
End Sub
Private Sub FlyIn(FRng As Range, FColor As Long, BRng As Range, BColor As Long, iType)
'iType co gia tri tu 1 den 8, bieu dien huong bay cua text (tinh theo chieu kim dong ho)
'VD: iType = 1, bay tu tren xuong, iType = 2, bay tu goc phai phia tren xuong...
Dim Clls As Range, i As Long, n As Long, Delay As Long, Dist As Long
Dim Tmp1 As Range, Tmp2 As Range, Tmp3 As Range, iR, iC
On Error Resume Next
iR = Array(1, 1, 0, -1, -1, -1, 0, 1)
iC = Array(0, -1, -1, -1, 0, 1, 1, 1)
Set Tmp2 = BRng
If iType = 3 Or iType = 7 Then
Delay = 0
Dist = Int((BRng.Columns.Count + FRng.Columns.Count) / 2) + 15
Else
Delay = 10
Dist = Int((BRng.Rows.Count + FRng.Rows.Count) / 2)
End If
For Each Clls In FRng
For i = n - Dist To 0
Set Tmp1 = Intersect(Ws.Range(Clls).Offset(i * iR(iType - 1), i * iC(iType - 1)), BRng)
Tmp2.Interior.ColorIndex = BColor
Tmp1.Interior.ColorIndex = FColor
Sleep Delay
DoEvents
Next i
If Tmp3 Is Nothing Then
Set Tmp3 = Tmp1
Else
Set Tmp3 = Union(Tmp3, Tmp1)
End If
Set Tmp2 = InvertRange(BRng, Tmp3)
If iType = 3 Or iType = 7 Then n = n + 5
Next Clls
End Sub
Sub Test()
Dim i As Long, BackRng As Range, Frame As Range
Set BackRng = [H8:BV15] '<----Trên bảng tính của bạn có thể là vùng khác
Set Frame = [G7:BW16] '<----Trên bảng tính của bạn có thể là vùng khác
.....
End Sub
Enframe Vùng , màu 1, màu 2
Enframe Frame, 4, 8
DrawText CollectRng(Vùng chứa địa chỉ các nét vẽ), màu chữ
DrawText CollectRng([A1:A13]), 3
Elastic Vùng cần co giãn
Elastic BackRng
Flicker CollectRng(Vùng chứa địa chỉ các nét vẽ), màu 1, màu 2, số lần nhấp nháy
Flicker CollectRng([A1:A13]), 3, 7, 6
DrawText CollectRng(Vùng chứa địa chỉ các nét vẽ), màu chữ
DrawText CollectRng([A1:A13]), 3
Wave Vùng chứa địa chỉ các nét vẽ, màu chữ, Vùng nền, màu nền
Wave [A1:A13], 3, BackRng, 36
FlyIn Vùng chứa địa chỉ các nét vẽ, màu chữ, Vùng nền, màu nền, kiểu bay, thời gian trể
FlyIn [A1:A13], 7, BackRng, 0, 2, 10
For i = 0 To 7
FlyIn [A1:A13], 7, BackRng, 0, i, 10
Next i
Sub Test()
Dim i As Long, BackRng As Range, Frame As Range
Set BackRng = [H8:BV15]
Set Frame = [G7:BW16]
Frame.Clear
Enframe Frame, 4, 8
DrawText CollectRng([A1:A13]), 3
Elastic BackRng
Dream CollectRng([A1:A13]), 0
Flicker CollectRng([A1:A13]), 3, 7, 6
Wave [A1:A13], 3, BackRng, 36
For i = 0 To 7
FlyIn [A1:A13], 7, BackRng, 0, i, 10
Next i
End Sub