Có thể copy & paste màu nền của cell này qua cell khác đc ko? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

nhuuvinh18

Thành viên mới
Tham gia
11/9/07
Bài viết
48
Được thích
1
Xin chào mn,

Có cách nào copy & paste màu của 1 cell này sang 1 cell khác ko ạ? Chỉ cần lấy màu của ô thôi chứ ko copy các format khác.
Mình tìm các bài trên GPE nhưng ko thấy, mong mn am hiểu sâu giúp đỡ ạ.

Cám ơn mn
 
Trả lời: Có.
Cách: Dùng VBA
Code:
Mã:
Sub CopyColor()
Dim rng0 As Range, rng As Range
On Error Resume Next
Set rng0 = Application.InputBox(prompt:="Chon vung can lay mau:", Type:=8)
If rng0 Is Nothing Then Exit Sub
Set rng = Application.InputBox(prompt:="Chon vung gan mau:", Type:=8)
If rng Is Nothing Then Exit Sub
rng.Interior.Color = rng0.DisplayFormat.Interior.Color
End Sub
Cách thực hiện:
- Mở cửa sổ VBA, chèn 1 module, chép đoạn trên vào
- Gán phím tắt cho macro trên (giả sử là ctrl + shift + V)
- Khi cấn copy/ paste màu nền: Nhấn ctrl + shift + V rồi chọn 1 ô (hoặc 1 vùng)* cần lấy màu/ OK, tiếp đến chọn ô hoặc vùng cần gán màu vào/ OK.
(* Nếu chọn là vùng thì màu nền được lấy là ô đầu tiên của vùng đó)
 
Xin chào mn,

Có cách nào copy & paste màu của 1 cell này sang 1 cell khác ko ạ? Chỉ cần lấy màu của ô thôi chứ ko copy các format khác.
Mình tìm các bài trên GPE nhưng ko thấy, mong mn am hiểu sâu giúp đỡ ạ.

Cám ơn mn

Không được chỉ dùng code hoặc bạn chọn ô muốn copy màu vào tab Home >> Fill Color (Biểu tượng đổ màu) coi ô muốn copy màu gì click chọn (nó sẽ lưu lại), rồi qua ô khác vào Fill color sẽ thấy màu lúc trước chọn
 
Trả lời: Có.
Cách: Dùng VBA
Code:
Mã:
Sub CopyColor()
Dim rng0 As Range, rng As Range
On Error Resume Next
Set rng0 = Application.InputBox(prompt:="Chon vung can lay mau:", Type:=8)
If rng0 Is Nothing Then Exit Sub
Set rng = Application.InputBox(prompt:="Chon vung gan mau:", Type:=8)
If rng Is Nothing Then Exit Sub
rng.Interior.Color = rng0.DisplayFormat.Interior.Color
End Sub
Cách thực hiện:
- Mở cửa sổ VBA, chèn 1 module, chép đoạn trên vào
- Gán phím tắt cho macro trên (giả sử là ctrl + shift + V)
- Khi cấn copy/ paste màu nền: Nhấn ctrl + shift + V rồi chọn 1 ô (hoặc 1 vùng)* cần lấy màu/ OK, tiếp đến chọn ô hoặc vùng cần gán màu vào/ OK.
(* Nếu chọn là vùng thì màu nền được lấy là ô đầu tiên của vùng đó)

Mần kiểu này so với việc chọn màu trên bảng màu thì cách nào nhanh hơn ta?
 
Trả lời: Có.
Cách: Dùng VBA
Code:
Mã:
Sub CopyColor()
Dim rng0 As Range, rng As Range
On Error Resume Next
Set rng0 = Application.InputBox(prompt:="Chon vung can lay mau:", Type:=8)
If rng0 Is Nothing Then Exit Sub
Set rng = Application.InputBox(prompt:="Chon vung gan mau:", Type:=8)
If rng Is Nothing Then Exit Sub
rng.Interior.Color = rng0.DisplayFormat.Interior.Color
End Sub
Cách thực hiện:
- Mở cửa sổ VBA, chèn 1 module, chép đoạn trên vào
- Gán phím tắt cho macro trên (giả sử là ctrl + shift + V)
- Khi cấn copy/ paste màu nền: Nhấn ctrl + shift + V rồi chọn 1 ô (hoặc 1 vùng)* cần lấy màu/ OK, tiếp đến chọn ô hoặc vùng cần gán màu vào/ OK.
(* Nếu chọn là vùng thì màu nền được lấy là ô đầu tiên của vùng đó)

Cám ơn bạn nhiều ạ,
Mình làm theo copy/paste màu từng ô riêng lẻ thì ok. Nhưng copy cho 1 mảng (có ô có màu, có ô không) thì những ô có màu nó paste đúng, còn những ô ko màu (màu trắng) nó lại paste qua thành màu đen. Với lại copy/paste giữa 2 file khác nhau hình như nó ko cho.
Bạn ktra giúp với ạ
 
Lần chỉnh sửa cuối:
Không được chỉ dùng code hoặc bạn chọn ô muốn copy màu vào tab Home >> Fill Color (Biểu tượng đổ màu) coi ô muốn copy màu gì click chọn (nó sẽ lưu lại), rồi qua ô khác vào Fill color sẽ thấy màu lúc trước chọn

Chắc phải dùng code chứ sheet cả mấy trăm ô ko làm từng ô 1 đc bạn ơi
 
Cám ơn bạn nhiều ạ,
Mình làm theo copy/paste màu từng ô riêng lẻ thì ok. Nhưng copy cho 1 mảng (có ô có màu, có ô không) thì những ô có màu nó paste đúng, còn những ô ko màu (màu trắng) nó lại paste qua thành màu đen. Với lại copy/paste giữa 2 file khác nhau hình như nó ko cho.
Bạn ktra giúp với ạ
Với lại copy/paste giữa 2 file khác nhau hình như nó ko cho.
Hoàn toàn thực hiện được giữa 2 File.
copy cho 1 mảng (có ô có màu, có ô không) thì những ô có màu nó paste đúng, còn những ô ko màu (màu trắng) nó lại paste qua thành màu đen
Bạn kiểm tra lại vùng đích cần paste màu vào có định dạng theo điều kiện không?
Bạn chú ý mục * ở bài #2: vùng ban đầu cần copy -> Chọn cả vùng thì cũng chỉ lấy 1 cell đầu tiên.
 
Chắc phải dùng code chứ sheet cả mấy trăm ô ko làm từng ô 1 đc bạn ơi
Thì quét vùng muốn tô màu vào chỗ color trong Fill color đã được tạo trước đó là xong chứ làm gì từng ô 1, xong muốn áp dụng tiếp các vùng tiếp theo thì nhấn F4 để thực hiện lại

nó lại paste qua thành màu đen
Có vụ này nữa ah lấy từ phần mềm xuống hay gì?
 
Thì quét vùng muốn tô màu vào chỗ color trong Fill color đã được tạo trước đó là xong chứ làm gì từng ô 1, xong muốn áp dụng tiếp các vùng tiếp theo thì nhấn F4 để thực hiện lại

Theo tôi hiểu thì tình huống nó thế này:
- Người ta có vùng A1:C15 (chẳng hạn) đã được tô màu trước đó và rất có khả năng là mỗi cell được tô màu khác nhau
- Giờ người ta muốn copy nguyên cái bảng màu ấy sang E1:G15, chỉ lấy màu sắc mà không lấy các format khác
Không biết tôi đoán vậy đúng không?
-----------------------------------------
Có vụ này nữa ah lấy từ phần mềm xuống hay gì?
Có vụ này đó! Bởi khi viết code, ta lấy màu của cell nào đó đang có fillcolor thì dễ, nhưng giả định cell ấy chưa tô màu thì sẽ.. có vấn đề
 
Lần chỉnh sửa cuối:
Theo tôi hiểu thì tình huống nó thế này:
- Người ta có vùng A1:C15 (chẳng hạn) đã được tô màu trước đó và rất có khả năng là mỗi cell được tô màu khác nhau
- Giờ người ta muốn copy nguyên cái bảng màu ấy sang E1:G15, chỉ lấy màu sắc mà không lấy các format khác
Không biết tôi đoán vậy đúng không?
-----------------------------------------

Có vụ này đó! Bởi khi viết code, ta lấy màu của cell nào đó đang có fillcolor thì dễ, nhưng giả định cell ấy chưa tô màu thì sẽ.. có vấn đề

Dạ đúng rồi anh ạ, trong mảng đó có nhiều ô & mỗi ô 1 màu khác nhau, có cả những ô không có màu nữa. Em cần copy mỗi màu của những ô đó rồi đưa qua 1 mảng khác
 
Dạ đúng rồi anh ạ, trong mảng đó có nhiều ô & mỗi ô 1 màu khác nhau, có cả những ô không có màu nữa. Em cần copy mỗi màu của những ô đó rồi đưa qua 1 mảng khác

Ờ ha. Bài #1 thì nói 1 cell tới 1 cell. Bây giờ là mảng -> mảng. Sao không viết luôn cái này ở bài đầu đi.
Bạn ráng chờ nha.
 
Dạ đúng rồi anh ạ, trong mảng đó có nhiều ô & mỗi ô 1 màu khác nhau, có cả những ô không có màu nữa. Em cần copy mỗi màu của những ô đó rồi đưa qua 1 mảng khác

Thật ra cell chưa tô màu và đã tô màu sẽ khác nhau chỗ này:
Mã:
Range("...").Interior.Pattern = xlNone
Code trên nếu cho kết quả = TRUE nghĩa là chưa tô màu và ngược lại. Vậy khi viết code ta IF vài phát là xong (cell nào có Pattern = xlNone thì bỏ qua)
Phần còn lại chứ dùng vòng lập bình thường là được rồi
 
Thật ra cell chưa tô màu và đã tô màu sẽ khác nhau chỗ này:
Mã:
Range("...").Interior.Pattern = xlNone
Code trên nếu cho kết quả = TRUE nghĩa là chưa tô màu và ngược lại. Vậy khi viết code ta IF vài phát là xong (cell nào có Pattern = xlNone thì bỏ qua)
Phần còn lại chứ dùng vòng lập bình thường là được rồi

anh code lại giúp e với, e ko rành vba nên ko biết sửa ntn. cám ơn anh
 
anh code lại giúp e với, e ko rành vba nên ko biết sửa ntn. cám ơn anh

Đại khái như tôi nói ở trên thôi:
Mã:
Sub PasteFillColor()
  Dim rngSrc As Range, rngTarget As Range, cel As Range
  Dim lR As Long, lC As Long
  On Error Resume Next
  Set rngSrc = Application.InputBox("Chon vùng nguon", Type:=8)
  If Not rngSrc Is Nothing Then
    Set rngTarget = Application.InputBox("Chon cell dich", Type:=8)
    If Not rngTarget Is Nothing Then
      On Error GoTo 0
      For lR = 1 To rngSrc.Rows.Count
        For lC = 1 To rngSrc.Columns.Count
          rngTarget(lR, lC).Interior.Pattern = rngSrc(lR, lC).Interior.Pattern
          If rngSrc(lR, lC).Interior.Pattern <> xlNone Then
            rngTarget(lR, lC).Interior.Color = rngSrc(lR, lC).Interior.Color
          End If
        Next
      Next
    End If
  End If
End Sub
Từ đây phát triển lên thế nào tùy ý (có thể làm hoành tráng cho thành dạng AddIn chẳng hạn)
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom