Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
Dim Rng As Range, bColor As Byte, Clls As Range
Dim Value_ As Variant
bColor = Target.Interior.ColorIndex
If bColor > 2 Then
Value_ = Target.Value
Set Rng = UsedRange
For Each Clls In Rng
If Clls.Value = Value_ Then _
Clls.Interior.ColorIndex = bColor
Next Clls
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("ARR1,ARR2"), Target) Is Nothing Then
Range("ARR1").Copy Destination:=Range("ARR2")
End If
End Sub
anhtuan1066 đã viết:Tôi thấy như vầy: Đàng nào thì bạn cũng đang gán D50 = A1, D51 = A2 vân vân... Vậy tôi có cách này tuy ko phải là hay ho gì cho lắm:
1> Đầu tiên đặt name cho vùng A1 đến .. bao nhiêu đó là ARR1, đặt name cho vùng D50 đến... là ARR2
2> Tiếp theo dùng code sau:
Khi bạn thay đổi giá trị và cã màu sắc ở vùng ARR1 thì chắc chắn vùng ARR2 cũng sẽ thay đổi tương tựPHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Range("ARR1,ARR2"), Target) Is Nothing Then Range("ARR1").Copy Destination:=Range("ARR2") End If End Sub
Xem file nhé!
ANH TUẤN
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim Rng As Range, bColor As Byte, Clls As Range
Dim ii As String, tt As String
ii = Target.Formula
Set Rng = UsedRange
For Each Clls In Rng
bColor = Clls.Interior.ColorIndex
tt = Clls.Address
tt = "=" & Replace(tt, "$", "")
If tt = ii Then
Target.Interior.ColorIndex = bColor
End If
Next Clls
End Sub
SA_DQ đã viết:PHP:Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next Dim Rng As Range, bColor As Byte, Clls As Range Dim Value_ As Variant bColor = Target.Interior.ColorIndex If bColor > 2 Then Value_ = Target.Value Set Rng = UsedRange For Each Clls In Rng If Clls.Value = Value_ Then _ Clls.Interior.ColorIndex = bColor Next Clls End If End Sub
BẠN VODA À!Ở ĐÂY CÁC Ô ĐÍCH ĐẢ ĐƯỢC GÁN SẲN BẰNG CÁC Ô NGUỒN RỒI VÀ CÓ CẢ HÀNG TRĂM Ô NHƯ VẬY. YÊU CẦU LÀ KHI TA TÔ MÀU NỀN Ô NGUỒN THÌ CÁC Ô ĐÍCH ĐỔI MÀU THEO TỨC THÌ CHỨ CÒN DOUBLE CLICK CẢ TRĂM LẦN THÌ KHÔNG TIỆN.voda đã viết:Thêm một cách nữa cho vui những ngày đầu xuân:
Mã:Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Dim Rng As Range, bColor As Byte, Clls As Range Dim ii As String, tt As String ii = Target.Formula Set Rng = UsedRange For Each Clls In Rng bColor = Clls.Interior.ColorIndex tt = Clls.Address tt = "=" & Replace(tt, "$", "") If tt = ii Then Target.Interior.ColorIndex = bColor End If Next Clls End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$A$1" Then
For I = 1 To 12
For Each Clls In Range("ARR" & I)
If Clls.Value <> "" Then
K = K + 1
Clls.Copy Destination:=Cells(K + 56, 5)
End If
Next
K = K + 1
Next I
End If
End Sub
Option Explicit
Sub ColorRangeS()
On Error Resume Next
Dim Rng As Range, Clls As Range, UsedRng As Range, Cll0 As Range
Dim Value_, bColor As Integer
Set Rng = Selection: Set UsedRng = ActiveSheet.UsedRange
Application.ScreenUpdating = False
For Each Clls In Rng
bColor = Clls.Interior.ColorIndex
If bColor > 2 Then
Value_ = Clls.Value
For Each Cll0 In UsedRng
If Cll0.Value = Value_ Then _
Cll0.Interior.ColorIndex = bColor
Next Cll0
End If
Next Clls
End Sub
Sub doimau()
On Error Resume Next
Dim Rng As Range, bColor As Byte, Clls As Range
Dim tt As String
Set Rng = ActiveSheet.UsedRange
For Each Clls In Rng
tt = Clls.Formula
If tt <> "" Then
bColor = Range(tt).Interior.ColorIndex
Clls.Interior.ColorIndex = bColor
bColor = 0
End If
Next Clls
End Sub
THẬT TUYỆT VỜI!CÁM ƠN ANH TUẤN RẤT NHIỀU.SAU KHI BỎ CÔNG THỨC GÁN MÌNH SẺ PHÁT TRIỂN THÊM VÀI CÁI NỮA.PHẦN QUAN TRỌNG NHẤT NẰM Ở CHỔ ANH TUẤN ĐÃ LÀM GIÚP MÌNH.CÁM ƠN RẤT NHIỀU.anhtuan1066 đã viết:Ai chà... dử liệu cũa bạn trông.. ngộ quá ha.. chẳng hiểu nó là gì cã...
Tôi cũng cố gắng làm cho bạn đây...
1> Đầu tiên tôi đặt name cho từng vùng màu xanh lá là: ARR1, ARR2.. đến ARR12
2> Tiếp theo dùng code:
Sau khi tô màu xong, bạn chỉ cần nhấp vào cell A1 thì code sẽ chạy...PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = False If Target.Address = "$A$1" Then For I = 1 To 12 For Each Clls In Range("ARR" & I) If Clls.Value <> "" Then K = K + 1 Clls.Copy Destination:=Cells(K + 56, 5) End If Next K = K + 1 Next I End If End Sub
Tôi copy xuống Cell E57 trở xuống đễ bạn tiện so sánh, nếu thấy dc thì hãy xóa các cell từ D57 trở xuống là dc rồi... sẽ ko cần công thức nữa
Mến
ANH TUẤN