Tạo chữ nhấp nháy

Liên hệ QC

hoahuongduong1986

Thành viên thường trực
Tham gia
14/11/18
Bài viết
346
Được thích
40
Em có đoan code này trên mạng để chuyển màu chữ. Nhưng khi em Add vào nó hiệu lực ở tất cả các FIle Excel. Làm sao đẻ nó chỉ thực hiện cho File em đang làm thôi ạ. Em cảm ơn ạ.

Sub StartBlink()
Dim xCell As Range
Dim xTime As Variant
Set xCell = Range("A6")
With ThisWorkbook.Worksheets("Bao cao").Range("A6").Font
If xCell.Font.Color = vbRed Then
xCell.Font.Color = vbWhite
Else
xCell.Font.Color = vbRed
End If
End With
xTime = Now + TimeSerial(0, 0, 1)
Application.OnTime xTime, "'" & ThisWorkbook.Name & "'!StartBlink", , True
End Sub
 
Em có đoan code này trên mạng để chuyển màu chữ. Nhưng khi em Add vào nó hiệu lực ở tất cả các FIle Excel. Làm sao đẻ nó chỉ thực hiện cho File em đang làm thôi ạ. Em cảm ơn ạ.

Sub StartBlink()
Dim xCell As Range
Dim xTime As Variant
Set xCell = Range("A6")
With ThisWorkbook.Worksheets("Bao cao").Range("A6").Font
If xCell.Font.Color = vbRed Then
xCell.Font.Color = vbWhite
Else
xCell.Font.Color = vbRed
End If
End With
xTime = Now + TimeSerial(0, 0, 1)
Application.OnTime xTime, "'" & ThisWorkbook.Name & "'!StartBlink", , True
End Sub
Tìm trên GPE này mấy năm trước có code Anh Ndu viết nhấp nháy không bằng lấp lánh .... copy về chỉnh sửa mà dùng he :D
 
Upvote 0
Em có đoan code này trên mạng để chuyển màu chữ. Nhưng khi em Add vào nó hiệu lực ở tất cả các FIle Excel. Làm sao đẻ nó chỉ thực hiện cho File em đang làm thôi ạ. Em cảm ơn ạ.
Mình mượn code bạn sửa tí.
Sub StartBlink()
Dim xCell As Range
Dim xTime As Variant
Set xCell = Range("A6")
With ThisWorkbook.Worksheets("Bao cao").Range("A6").Font
If xCell.Font.Color = vbRed Then
xCell.Font.Color = vbWhite
Else
xCell.Font.Color = vbRed
End If
End With
xTime = Now + TimeSerial(0, 0, 1)
Application.OnTime xTime, "'" & ThisWorkbook.Name & "'!StartBlink", , True
End Sub
PHP:
Sub StartBlink()
Dim xCell As Range
Dim xTime As Variant
Set xCell =ThisWorkbook.Worksheets("Sheet1").Range("A6")
If xCell.Font.Color = vbRed Then
xCell.Font.Color = vbWhite
Else
xCell.Font.Color = vbRed
End If
xTime = Now + TimeSerial(0, 0, 1)
Application.OnTime xTime, "'" & ThisWorkbook.Name & "'!StartBlink", , True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn sửa lại:

JavaScript:
Set xCell = ThisWorkbook.Worksheets("Bao cao").Range("A6")

Hoặc: xCell.Font.Color -> .Color
 
Upvote 0
Bạn sửa lại:

JavaScript:
Set xCell = ThisWorkbook.Worksheets("Bao cao").Range("A6")

Hoặc: xCell.Font.Color -> .Color
Em cảm ơn anh. Em hỏi thêm chút là khi em mở một File chứa đoạn Code này và một File excel bất kỳ. E không tắt được File chứa đoạn Code này ạ. Nó cứ tắt đi rồi lại tự động mở lại ạ. E không rõ lý do vì sao ạ.
 
Upvote 0
Em cảm ơn anh. Em hỏi thêm chút là khi em mở một File chứa đoạn Code này và một File excel bất kỳ. E không tắt được File chứa đoạn Code này ạ. Nó cứ tắt đi rồi lại tự động mở lại ạ. E không rõ lý do vì sao ạ.
Bạn đặt biến ra ngoài sub lên trên cùng Module :
Đổi biến cục bộ:
Mã:
Dim xTime As Variant
Thành biến toàn cục:
Mã:
Public xTime As Date

Thêm đoạn code sau vào Sự kiện - Trước khi thoát của workbook:
Mã:
Application.OnTime xTime, "StartBlink" , , False

Hoặc thêm vào module:
Mã:
Sub Auto_Close()
    Application.OnTime xTime, "StartBlink" , , False
End Sub

Cách 2:

Tạo biến toàn cục trong Module:
Mã:
Public AllowRun As Boolean

Copy vào code workbook:
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean): AllowRun   = False: End Sub
Private Sub Workbook_Open(): AllowRun  = True : End Sub

Sửa:
Mã:
If AllowRun Then xTime = Now + TimeSerial(0, 0, 1)
Application.OnTime xTime, "'" & ThisWorkbook.Name & "'!StartBlink", , AllowRun

Hoặc sửa và thêm:

Mã:
Sub StartBlink()
DoEvents
If AllowRun = False Then Exit Sub
'....

***Lưu ý: luôn luôn sử dụng DoEvents với bất kì đoạn code nào được tạo ra khi sử dụng OnTime để Loop. Ưu tiên nằm giữa vòng lặp.
Và không sử dụng các phương thức tăng tốc VBA -> tác dụng ngược khi sử dụng OnTime
 
Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn anh. Em hỏi thêm chút là khi em mở một File chứa đoạn Code này và một File excel bất kỳ. E không tắt được File chứa đoạn Code này ạ. Nó cứ tắt đi rồi lại tự động mở lại ạ. E không rõ lý do vì sao ạ.
Bạn copy thêm code này vào.
Mã:
Sub Auto_Close()
    Application.OnTime Now + TimeSerial(0, 0, 1), "'" & ThisWorkbook.Name & "'!StartBlink", , False
End Sub
 
Upvote 0
Bạn đặt biến ra ngoài sub lên trên cùng Module :
Đổi biến cục bộ:
Mã:
Dim xTime As Variant
Thành biến toàn cục:
Mã:
Public xTime As Date

Thêm đoạn code sau vào Sự kiện - Trước khi thoát của workbook:
Mã:
Application.OnTime xTime, "StartBlink" , , False

Hoặc thêm vào module:
Mã:
Sub Auto_Close()
    Application.OnTime xTime, "StartBlink" , , False
End Sub

Cách 2:

Tạo biến toàn cục trong Module:
Mã:
Public AllowRun As Boolean

Copy vào code workbook:
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean): AllowRun   = False: End Sub
Private Sub Workbook_Open(): AllowRun  = True : End Sub

Sửa:
Mã:
If AllowRun Then xTime = Now + TimeSerial(0, 0, 1)
Application.OnTime xTime, "'" & ThisWorkbook.Name & "'!StartBlink", , AllowRun

Hoặc sửa và thêm:

Mã:
Sub StartBlink()
DoEvents
If AllowRun = False Then Exit Sub
'....

***Lưu ý: luôn luôn sử dụng DoEvents với bất kì đoạn code nào được tạo ra khi sử dụng OnTime để Loop. Ưu tiên nằm giữa vòng lặp.
Và không sử dụng các phương thức tăng tốc VBA -> tác dụng ngược khi sử dụng OnTime
Em cảm ơn a nhé.
 
Upvote 0
Bạn copy thêm code này vào.
Mã:
Sub Auto_Close()
    Application.OnTime Now + TimeSerial(0, 0, 1), "'" & ThisWorkbook.Name & "'!StartBlink", , False
End Sub
Em muốn hỏi thêm là. Đoạn Code này sẽ chạy khi em đóng File mà không cần tạo nút bấm thì làm thế nào ạ - Tức nó tự động bỏ chế độ này trước khi đóng File ạ.
Bài đã được tự động gộp:

Bạn đặt biến ra ngoài sub lên trên cùng Module :
Đổi biến cục bộ:
Mã:
Dim xTime As Variant
Thành biến toàn cục:
Mã:
Public xTime As Date

Thêm đoạn code sau vào Sự kiện - Trước khi thoát của workbook:
Mã:
Application.OnTime xTime, "StartBlink" , , False

Hoặc thêm vào module:
Mã:
Sub Auto_Close()
    Application.OnTime xTime, "StartBlink" , , False
End Sub

Cách 2:

Tạo biến toàn cục trong Module:
Mã:
Public AllowRun As Boolean

Copy vào code workbook:
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean): AllowRun   = False: End Sub
Private Sub Workbook_Open(): AllowRun  = True : End Sub

Sửa:
Mã:
If AllowRun Then xTime = Now + TimeSerial(0, 0, 1)
Application.OnTime xTime, "'" & ThisWorkbook.Name & "'!StartBlink", , AllowRun

Hoặc sửa và thêm:

Mã:
Sub StartBlink()
DoEvents
If AllowRun = False Then Exit Sub
'....

***Lưu ý: luôn luôn sử dụng DoEvents với bất kì đoạn code nào được tạo ra khi sử dụng OnTime để Loop. Ưu tiên nằm giữa vòng lặp.
Và không sử dụng các phương thức tăng tốc VBA -> tác dụng ngược khi sử dụng OnTime
Em muốn hỏi thêm anh chút ạ. Em muốn cái đoạn này Application.OnTime xTime, "StartBlink" , , False nó chạy trước khi nó đóng File thì làm thế nào ạ. Nghĩa là em không muốn tạo nút bấm để nó chạy mà khi em bấm vào vào dấu X để đóng File thì nó chạy đoạn Code này xong mới đóng File ạ. Em cảm ơn ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Cái đó là tự chạy khi đóng file chứ gì nữa bạn.


Private Sub Workbook_CLOSE ()
Application.OnTime xTime, "StartBlink" , , False
End Sub

Em đang hiểu lờ mờ cách diễn đạt kiểu như đoạn trên đây ạ. Cho vào Workbook code này. Phải thêm đoạn code nào để hiểu rằng khi đóng File thì nó sẽ chạy trước để vô hiệu hóa cái cái hiệu ứng này trước khi đóng ấy ạ. Thay vì em phải tạo một nút bấm để cho nó chạy ạ.
 
Upvote 0
Private Sub Workbook_CLOSE ()
Application.OnTime xTime, "StartBlink" , , False
End Sub

Em đang hiểu lờ mờ cách diễn đạt kiểu như đoạn trên đây ạ. Cho vào Workbook code này. Phải thêm đoạn code nào để hiểu rằng khi đóng File thì nó sẽ chạy trước để vô hiệu hóa cái cái hiệu ứng này trước khi đóng ấy ạ. Thay vì em phải tạo một nút bấm để cho nó chạy ạ.
Sao bạn không thử 1 lần mà cứ hỏi hoài thế nhỉ. Tôi đã nói là code đó là tự chạy khi đóng file rồi đó.
 
Upvote 0
Dạ vâng anh. Em chạy được nhưng mà khi em mở cùng lúc một File chứa Code này với một File excel khác thì em phải tắt các File khác trước mới tắt được File chứa code ạ. Nếu tắt File chứa code này trước các File Excel còn lại nó cứ tự động mở lên ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
218077
Bạn copy thêm code này vào.
Mã:
Sub Auto_Close()
    Application.OnTime Now + TimeSerial(0, 0, 1), "'" & ThisWorkbook.Name & "'!StartBlink", , False
End Sub
Tôi nói copy thêm tức là copy vào chỗ đã có code, bạn đi copy vào ThisWorkbook mà còn lại đổi tên sub thành dong nữa.
Nếu bạn không biết thì cứ làm y hệt như hướng dẫn, đừng tự ý làm theo "suy luận" rồi nói không được khiến người khác chả biết đường nào mà lần.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom