Cần giúp tạo macro tô màu vàng và kẻ border tất cả các công thức mảng trong file Excel

Liên hệ QC

hktanh

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
22/8/19
Bài viết
112
Được thích
8
Giới tính
Nam
Chào các bạn. Mình có một số file tài liệu trong đó có nhiều công thức mảng và công thức thường (những công thức mà có thể dễ dàng copy xuống) xen kẽ nhau, và mình muốn quản lý những phần có công thức mảng đó bằng cách tô màu vàng và kẻ border cho những công thức mảng đó để dễ theo dõi (vì nếu tô màu thì đường border sẽ bị mất nên khó nhìn nên mình cần kẻ) . Mình sử dụng nút Toggle Button trong Custom UI với một macro được kích hoạt khi OnAction, macro này sẽ có 2 trường hợp là nếu nút được chọn thì tất cả các công thức mảng trong file excel đó (chỉ áp dụng trên Workbook chứa macro này đang được kích hoạt) sẽ được tô màu vàng và kẻ border, còn nếu nút không được chọn thì không tô màu những ô chứa công thức mảng, và border ở dạng màu xám thông thường (tức nếu nút không được chọn thì hiển thị ở chế độ xem bình thường, không tô màu và kẻ border các công thức mảng). Mình cảm ơn
 

File đính kèm

  • Cần tạo nút Ribbon tô màu công thức mảng.xlsm
    9.8 KB · Đọc: 9
Chào các bạn. Mình có một số file tài liệu trong đó có nhiều công thức mảng và công thức thường (những công thức mà có thể dễ dàng copy xuống) xen kẽ nhau, và mình muốn quản lý những phần có công thức mảng đó bằng cách tô màu vàng và kẻ border cho những công thức mảng đó để dễ theo dõi (vì nếu tô màu thì đường border sẽ bị mất nên khó nhìn nên mình cần kẻ) . Mình sử dụng nút Toggle Button trong Custom UI với một macro được kích hoạt khi OnAction, macro này sẽ có 2 trường hợp là nếu nút được chọn thì tất cả các công thức mảng trong file excel đó (chỉ áp dụng trên Workbook chứa macro này đang được kích hoạt) sẽ được tô màu vàng và kẻ border, còn nếu nút không được chọn thì không tô màu những ô chứa công thức mảng, và border ở dạng màu xám thông thường (tức nếu nút không được chọn thì hiển thị ở chế độ xem bình thường, không tô màu và kẻ border các công thức mảng). Mình cảm ơn
Bạn thử:
PHP:
Sub Test()
    Dim Cll As Range
    For Each Cll In Selection.SpecialCells(xlFormulas)
        If Cll.HasArray Then
            Cll.Interior.ColorIndex = 6
            Cll.Borders.LineStyle = 1
        End If
    Next
End Sub
 
Upvote 0
Bạn thử:
PHP:
Sub Test()
    Dim Cll As Range
    For Each Cll In Selection.SpecialCells(xlFormulas)
        If Cll.HasArray Then
            Cll.Interior.ColorIndex = 6
            Cll.Borders.LineStyle = 1
        End If
    Next
End Sub
Bạn ơi, còn trường hợp bỏ chọn nút Toggle Button để trở lại bình thường nữa nhé, với bạn có thể làm cho Sub Test kia có thể chạy trên toàn bộ các sheet của workbook chứa macro đó được không nhỉ, mình cảm ơn nhé :hi1:
 

File đính kèm

  • Cần tạo nút Ribbon tô màu công thức mảng.xlsm
    19.5 KB · Đọc: 5
Upvote 0
Bạn ơi, còn trường hợp bỏ chọn nút Toggle Button để trở lại bình thường nữa nhé, với bạn có thể làm cho Sub Test kia có thể chạy trên toàn bộ các sheet của workbook chứa macro đó được không nhỉ, mình cảm ơn nhé :hi1:
Muốn xóa màu, bỏ Border bạn dùng:
PHP:
Sub Test_Undo()
    Dim Cll As Range
    For Each Cll In Selection.SpecialCells(xlFormulas)
        If Cll.HasArray Then
            Cll.Interior.ColorIndex = 2
            Cll.Borders.LineStyle = xlNone
        End If
    Next
End Sub

+ Với nhiều Sheets, bạn thử:
PHP:
Sub Test2()
    Dim ws As Worksheet, Cll As Range
    On Error Resume Next
    For Each ws In ThisWorkbook.Worksheets
        For Each Cll In ws.Range("A1:O1000").SpecialCells(xlFormulas)
            If Cll.HasArray Then
                Cll.Interior.ColorIndex = 6
                Cll.Borders.LineStyle = 1
            End If
        Next: Next
End Sub

Sub Test_Undo2()
    Dim ws As Worksheet, Cll As Range
    On Error Resume Next
    For Each ws In ThisWorkbook.Worksheets
        For Each Cll In ws.Range("A1:O1000").SpecialCells(xlFormulas)
            If Cll.HasArray Then
                Cll.Interior.ColorIndex = 2
                Cll.Borders.LineStyle = xlNone
            End If
        Next
    Next
End Sub

+ Chú ý: Bạn có thể thay Range("A1:O1000") bằng vùng dữ liệu của bạn cho phù hợp.
 
Lần chỉnh sửa cuối:
Upvote 0
Muốn xóa màu, bỏ Border bạn dùng:
PHP:
Sub Test_Undo()
    Dim Cll As Range
    For Each Cll In Selection.SpecialCells(xlFormulas)
        If Cll.HasArray Then
            Cll.Interior.ColorIndex = 2
            Cll.Borders.LineStyle = xlNone
        End If
    Next
End Sub

+ Với nhiều Sheets, bạn thử:
PHP:
Sub Test2()
    Dim ws As Worksheet, Cll As Range
    On Error Resume Next
    For Each ws In ThisWorkbook.Worksheets
        For Each Cll In ws.Range("A1:O1000").SpecialCells(xlFormulas)
            If Cll.HasArray Then
                Cll.Interior.ColorIndex = 6
                Cll.Borders.LineStyle = 1
            End If
        Next: Next
End Sub

Sub Test_Undo2()
    Dim ws As Worksheet, Cll As Range
    On Error Resume Next
    For Each ws In ThisWorkbook.Worksheets
        For Each Cll In ws.Range("A1:O1000").SpecialCells(xlFormulas)
            If Cll.HasArray Then
                Cll.Interior.ColorIndex = 2
                Cll.Borders.LineStyle = xlNone
            End If
        Next
    Next
End Sub

+ Chú ý: Bạn có thể thay Range("A1:O1000") bằng vùng dữ liệu của bạn cho phù hợp.
Bạn ơi lúc mình chọn Undo thì nó là kiểu không có đường border ý, tức là nó trắng tinh không có border, làm cách nào để quay lại được cái border mặc định của Excel là RGB (218 , 220 , 221) sau khi ấn Undo nhỉ :) với lại cái macro chạy OnAction của Custom UI chỉ là 1 macro, cho nên liệu mình có thể dùng lệnh Call trong VBA để gọi được hai lệnh Check và Uncheck cái Toggle Button được không nhỉ, Check khi đánh dấu màu còn Uncheck lúc undo đánh dấu ý, mình cảm ơn
 

File đính kèm

  • Cần tạo nút Ribbon tô màu công thức mảng.xlsm
    22.9 KB · Đọc: 5
Upvote 0
Bạn ơi lúc mình chọn Undo thì nó là kiểu không có đường border ý, tức là nó trắng tinh không có border, làm cách nào để quay lại được cái border mặc định của Excel là RGB (218 , 220 , 221) sau khi ấn Undo nhỉ :) với lại cái macro chạy OnAction của Custom UI chỉ là 1 macro, cho nên liệu mình có thể dùng lệnh Call trong VBA để gọi được hai lệnh Check và Uncheck cái Toggle Button được không nhỉ, Check khi đánh dấu màu còn Uncheck lúc undo đánh dấu ý, mình cảm ơn
Tôi chỉ giúp bạn được đến đây thôi, phần tiếp theo bạn tự tìm hiểu lấy nhé.
 
Upvote 0
Bạn ơi lúc mình chọn Undo thì nó là kiểu không có đường border ý, tức là nó trắng tinh không có border, làm cách nào để quay lại được cái border mặc định của Excel là RGB (218 , 220 , 221) sau khi ấn Undo nhỉ :) với lại cái macro chạy OnAction của Custom UI chỉ là 1 macro, cho nên liệu mình có thể dùng lệnh Call trong VBA để gọi được hai lệnh Check và Uncheck cái Toggle Button được không nhỉ, Check khi đánh dấu màu còn Uncheck lúc undo đánh dấu ý, mình cảm ơn
Không biết có phải thế này không?
 

File đính kèm

  • Cần tạo nút Ribbon tô màu công thức mảng (1).xlsm
    19.4 KB · Đọc: 12
Upvote 0
Web KT
Back
Top Bottom