Tự động chèn object? (1 người xem)

  • Thread starter Thread starter ptt
  • Ngày gửi Ngày gửi
Liên hệ QC

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

ptt

Thành viên mới
Tham gia
14/12/06
Bài viết
33
Được thích
3
Em có một file đánh giá kỹ năng của nhân viên trong phần đính kèm.
Hiện tại muốn đánh giá thì em phải ngồi copy mấy cái object vào trong 1 cell rồi chỉnh sửa từng tí một.
Các bác giúp em tự động hoá nó được ko ạ? Hoặc là tạo một kiểu Data Validation cho từng ô, muốn đánh giá thì mình chỉ cần chọn object tương ứng. Hoặc là tạo nút bấm rồi nó tự chèn object vào cell mình chọn.

Mong các bác giúp đỡ, em làm kiểu thủ công oải quá ạ. :-=
 

File đính kèm

Em có một file đánh giá kỹ năng của nhân viên trong phần đính kèm.
Hiện tại muốn đánh giá thì em phải ngồi copy mấy cái object vào trong 1 cell rồi chỉnh sửa từng tí một.
Các bác giúp em tự động hoá nó được ko ạ? Hoặc là tạo một kiểu Data Validation cho từng ô, muốn đánh giá thì mình chỉ cần chọn object tương ứng. Hoặc là tạo nút bấm rồi nó tự chèn object vào cell mình chọn.

Mong các bác giúp đỡ, em làm kiểu thủ công oải quá ạ. :-=

Tôi hiểu là muốn đánh giá học lực của học sinh thì phải có bảng điểm các kỳ kiểm tra, các kỳ thi. Bạn muốn đánh giá kỹ năng của nhân viên thì bạn cũng phải có dữ liệu nào đó để trên cơ sở đó "đánh giá". Chả nhẽ lúc đó bạn vui thì bạn chọn Giỏi còn lúc khác buồn thì chọn Kém? Phải có cơ sở chứ không thể kết luận dựa vào thời tiết hiện hành. Vậy cơ sở của bạn là gì, bạn lấy thông tin ở đâu để "đánh giá"? Tôi hỏi thế vì rất có thể hướng đi mà người giúp bạn sẽ chọn sẽ cần thông tin ấy. Vd. nếu là bạn tự gõ dựa vào thời tiết thì người giúp bạn sẽ phải kiểm tra bạn đã nhập thông tin chưa để trên cơ sở đó tạo object thích hợp. Nhưng nếu bạn chỉ ra nơi có thông tin thì người ta chả kiểm tra gì cả mà tự lọ mọ đi lấy thông tin rồi tạo object thích hợp. Bạn hiểu chứ?

Bạn có 3 sheet. Bạn cần thêm object cho cả 3? Nếu thế thì với mỗi sheet bạn liệt kê ra vùng cần thêm object.

Có thông tin rồi mới nghĩ xem có thể giúp bạn được không. Thông tin là điều kiện cần, không nhất thiết đồng thời là điều kiện đủ.

Mà sao bạn lại chơi kiểu thêm object? Nhập Giỏi, Khá, ..., Kém không đủ sao? Hoặc tô mầu thích hợp với từng khả năng? Nhiều người cứ thích biến bảng tính Excel thành bức tranh rực rỡ mầu sắc, có cả đồng hồ chạy, chữ chạy, nhạc mở hết cỡ. Thật khó hiểu.
 
Tôi hiểu là muốn đánh giá học lực của học sinh thì phải có bảng điểm các kỳ kiểm tra, các kỳ thi. Bạn muốn đánh giá kỹ năng của nhân viên thì bạn cũng phải có dữ liệu nào đó để trên cơ sở đó "đánh giá". Chả nhẽ lúc đó bạn vui thì bạn chọn Giỏi còn lúc khác buồn thì chọn Kém? Phải có cơ sở chứ không thể kết luận dựa vào thời tiết hiện hành. Vậy cơ sở của bạn là gì, bạn lấy thông tin ở đâu để "đánh giá"? Tôi hỏi thế vì rất có thể hướng đi mà người giúp bạn sẽ chọn sẽ cần thông tin ấy. Vd. nếu là bạn tự gõ dựa vào thời tiết thì người giúp bạn sẽ phải kiểm tra bạn đã nhập thông tin chưa để trên cơ sở đó tạo object thích hợp. Nhưng nếu bạn chỉ ra nơi có thông tin thì người ta chả kiểm tra gì cả mà tự lọ mọ đi lấy thông tin rồi tạo object thích hợp. Bạn hiểu chứ?

Bạn có 3 sheet. Bạn cần thêm object cho cả 3? Nếu thế thì với mỗi sheet bạn liệt kê ra vùng cần thêm object.

Có thông tin rồi mới nghĩ xem có thể giúp bạn được không. Thông tin là điều kiện cần, không nhất thiết đồng thời là điều kiện đủ.

Mà sao bạn lại chơi kiểu thêm object? Nhập Giỏi, Khá, ..., Kém không đủ sao? Hoặc tô mầu thích hợp với từng khả năng? Nhiều người cứ thích biến bảng tính Excel thành bức tranh rực rỡ mầu sắc, có cả đồng hồ chạy, chữ chạy, nhạc mở hết cỡ. Thật khó hiểu.
Nếu là nhập Giỏi, Khá, ... thì em chả lọ mọ lên đây nhờ các bác làm gì. Em bảo thằng cháu em nó cũng làm được.
Hai là file em đưa lên đã có đầy đủ thông tin. Còn đánh giá theo tiêu chí như thế nào thì có liên quan j đâu, em đã đánh giá sẵn hết rồi, em chỉ nhờ các bác thực hiện động tác tự động chèn object vào thôi ạ.
Vùng cần thêm object thì là cái vùng mà đang có chằng chịt những cái hình vuông, tròn, sao, ... đấy ạ.
Cảm ơn vì sự giúp đỡ rất hữu ích của bác.
 
Nếu là nhập Giỏi, Khá, ... thì em chả lọ mọ lên đây nhờ các bác làm gì. Em bảo thằng cháu em nó cũng làm được.
Hai là file em đưa lên đã có đầy đủ thông tin. Còn đánh giá theo tiêu chí như thế nào thì có liên quan j đâu, em đã đánh giá sẵn hết rồi, em chỉ nhờ các bác thực hiện động tác tự động chèn object vào thôi ạ.
Vùng cần thêm object thì là cái vùng mà đang có chằng chịt những cái hình vuông, tròn, sao, ... đấy ạ.
Cảm ơn vì sự giúp đỡ rất hữu ích của bác.
Mấy vụ này dễ ẹc mà, chỉ vài dòng code thì nó vẽ ra đầy bảng tính
Code mẫu là thế này. Bạn thêm bớt tí là sẽ được như yêu cầu
PHP:
Sub QH()
Dim L, T, W, H, n, i
n = Array(92, 9, 10, 1, 7)
For i = 0 To 4
   With Cells(i + 1, 1)
      L = .Left: T = .Top
      W = .Width: H = .Height
      With ActiveSheet.Shapes
         .AddShape n(i), L, T, W, H
      End With
   End With
Next
End Sub
 
Mấy vụ này dễ ẹc mà, chỉ vài dòng code thì nó vẽ ra đầy bảng tính
Code mẫu là thế này. Bạn thêm bớt tí là sẽ được như yêu cầu
Cảm ơn bác rất nhiều ạ!
Nhưng em mong bác hướng dẫn cụ thể hơn, hoặc bác làm mẫu một tí trên file của em được không ạ? Mấy vụ code thì em ko rành lắm ạ.
Em xin cảm ơn!
 
Cảm ơn bác rất nhiều ạ!
Nhưng em mong bác hướng dẫn cụ thể hơn, hoặc bác làm mẫu một tí trên file của em được không ạ? Mấy vụ code thì em ko rành lắm ạ.
Em xin cảm ơn!
Copy code này cho vào bảng tính, khi nhập 1 số từ 1 đến 5 trên 1 ô bất kỳ thì sẽ có hình
Code này chỉ là minh họa thôi, còn phải tô màu, giới hạn vùng sử dụng...
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
   Dim L As Long, T As Long, W As Long, H As Long, n As Long
   With Target
      L = .Left: T = .Top
      W = .Width: H = .Height
      n = Choose(.Value, 92, 9, 10, 1, 7)
      .Value = ""
   End With
   ActiveSheet.Shapes.AddShape n, L, T, W, H
Application.EnableEvents = True
End Sub
 
Copy code này cho vào bảng tính, khi nhập 1 số từ 1 đến 5 trên 1 ô bất kỳ thì sẽ có hình
Code này chỉ là minh họa thôi, còn phải tô màu, giới hạn vùng sử dụng...
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
   Dim L As Long, T As Long, W As Long, H As Long, n As Long
   With Target
      L = .Left: T = .Top
      W = .Width: H = .Height
      n = Choose(.Value, 92, 9, 10, 1, 7)
      .Value = ""
   End With
   ActiveSheet.Shapes.AddShape n, L, T, W, H
Application.EnableEvents = True
End Sub

Kkhi người ta muốn sửa (chẳng hạn sửa số 1 thành số 4) thì sẽ... thế nào đây?
(sửa vài chục lần thì sẽ thành... rừng sao. Ẹc... Ẹc...)
 
Kkhi người ta muốn sửa (chẳng hạn sửa số 1 thành số 4) thì sẽ... thế nào đây?
(sửa vài chục lần thì sẽ thành... rừng sao. Ẹc... Ẹc...)
Em biết chứ, nhưng cứ từ từ. Nhà ai có rác tự nhiên sẽ la lên thôi. Nhiều khi lâu lắm người ta mới quay lại để viếng thăm GPE.
 
Em biết chứ, nhưng cứ từ từ. Nhà ai có rác tự nhiên sẽ la lên thôi. Nhiều khi lâu lắm người ta mới quay lại để viếng thăm GPE.

Thì vậy! Tôi cũng "sắp có cách" nhưng chưa "xì" ra (bị phải chờ)
Ẹc... Ẹc...
(Tôi đã từng làm món này lâu rồi trên file đánh giá kỹ năng trong cty)
 
Nếu là nhập Giỏi, Khá, ... thì em chả lọ mọ lên đây nhờ các bác làm gì. Em bảo thằng cháu em nó cũng làm được.
Hai là file em đưa lên đã có đầy đủ thông tin. Còn đánh giá theo tiêu chí như thế nào thì có liên quan j đâu, em đã đánh giá sẵn hết rồi, em chỉ nhờ các bác thực hiện động tác tự động chèn object vào thôi ạ.
Vùng cần thêm object thì là cái vùng mà đang có chằng chịt những cái hình vuông, tròn, sao, ... đấy ạ.
Cảm ơn vì sự giúp đỡ rất hữu ích của bác.

Bạn đánh giá như thế nào? Tôi hiểu là những "chằng chịt những cái hình vuông, tròn, sao" là bạn tự tạo bằng tay. Khi phải làm hộ bạn thì dĩ nhiên vùng ấy trắng tinh. Vậy muốn chèn object cho đúng vị trí, đúng hình thì tôi phải có thông tin. Tôi không hiểu nên tôi hỏi.

Mà bạn nên nhớ là tôi không hỏi về tiêu chí đánh giá. Tôi hỏi về thông tin "Giỏi, Khá, Kém" lấy từ đâu để tạo đúng object

Bây giờ tôi thử đoán thì có lẽ là sẽ phải có một danh sách để bạn tự chọn. Rồi sau khi có thông tin bạn chọn thì tạo object.

Bạn nên nhớ là vấn đề không phải của tôi. Nếu tôi đã bỏ công sức, thời gian ra để biết chắc chắn thì cũng là để giải quyết cho bạn vấn đề của bạn.

Nhưng với kiểu đôi co, vặn vẹo như thế thì tôi rút lui. Chấm hết.
 
Copy code này cho vào bảng tính, khi nhập 1 số từ 1 đến 5 trên 1 ô bất kỳ thì sẽ có hình
Code này chỉ là minh họa thôi, còn phải tô màu, giới hạn vùng sử dụng...
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
   Dim L As Long, T As Long, W As Long, H As Long, n As Long
   With Target
      L = .Left: T = .Top
      W = .Width: H = .Height
      n = Choose(.Value, 92, 9, 10, 1, 7)
      .Value = ""
   End With
   ActiveSheet.Shapes.AddShape n, L, T, W, H
Application.EnableEvents = True
End Sub
Thanks bác, nhưng mấy vụ code em mù tịt. Mong bác giúp em cụ thể. :)

Thì vậy! Tôi cũng "sắp có cách" nhưng chưa "xì" ra (bị phải chờ)
Ẹc... Ẹc...
(Tôi đã từng làm món này lâu rồi trên file đánh giá kỹ năng trong cty)
Vậy mong anh giúp em trên file của em với ạ. Em dốt mấy vụ code lắm ạ. :)
 
- Với bài này nếu chủ Topic trau chuốt ngôn từ hơn thì sẽ tốt hơn nhiều với mục đích là một bài "hỏi".
Em bảo thằng cháu em nó cũng làm được.

- Việc đánh giá kỹ năng tại các công ty là phổ biến có thể là hình tròn 4 phần, các hình tam giác, vuông, tròn..... nếu xử lý bằng việc nhập Shape sẽ làm tăng dung lượng file rất nhiều. Tôi đã làm và thấy giải pháp xử lý bằng Font sẽ hiệu quả hơn rất nhiều.

Bạn có thể tải các chương trình làm font và đặt các giá trị 1,2,3....cho các hình tương ứng. Các máy làm báo cáo sẽ sử dụng Font này để in. Đảm bảo cả về trình bày, dung lượng.
 
Thanks bác, nhưng mấy vụ code em mù tịt. Mong bác giúp em cụ thể. :)
Vậy mong anh giúp em trên file của em với ạ. Em dốt mấy vụ code lắm ạ. :)

Tôi đưa file mà tôi đã từng làm lên đây, bạn xem cách hoạt động của nó có đúng ý bạn không nha
 

File đính kèm

Thanks bác, nhưng mấy vụ code em mù tịt. Mong bác giúp em cụ thể. :)
Vậy mong anh giúp em trên file của em với ạ. Em dốt mấy vụ code lắm ạ. :)
Code của mình thì đơn giản, có thể bạn sẽ tự điều chỉnh khi cần. Vì đơn giản nên không trọn vẹn lắm
Copy code cho vào sheet nào tùy ý thích. Code sẽ có hiệu lực trong phạm vi A1:J100.
Bạn có thể sửa lại vùng này cho phù hợp
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, [A1:J100]) Is Nothing Then
   Dim L, T, W, H, n, m
   With Target
      L = .Left: T = .Top
      W = .Width: H = .Height
      n = Choose(.Value, 92, 9, 10, 1, 7)
      m = Choose(.Value, vbGreen, vbCyan, vbBlue, vbYellow, vbRed)
   End With
   With ActiveSheet.Shapes.AddShape(n, L, T, W, H)
      .Name = "Shape" & Target.Value
      .Fill.ForeColor.RGB = m
      .Line.Visible = msoFalse
   End With
   Target = ""
End If
Application.EnableEvents = True
End Sub
 
Tôi đưa file mà tôi đã từng làm lên đây, bạn xem cách hoạt động của nó có đúng ý bạn không nha
Code của mình thì đơn giản, có thể bạn sẽ tự điều chỉnh khi cần. Vì đơn giản nên không trọn vẹn lắm
Copy code cho vào sheet nào tùy ý thích. Code sẽ có hiệu lực trong phạm vi A1:J100.
Bạn có thể sửa lại vùng này cho phù hợp
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, [A1:J100]) Is Nothing Then
   Dim L, T, W, H, n, m
   With Target
      L = .Left: T = .Top
      W = .Width: H = .Height
      n = Choose(.Value, 92, 9, 10, 1, 7)
      m = Choose(.Value, vbGreen, vbCyan, vbBlue, vbYellow, vbRed)
   End With
   With ActiveSheet.Shapes.AddShape(n, L, T, W, H)
      .Name = "Shape" & Target.Value
      .Fill.ForeColor.RGB = m
      .Line.Visible = msoFalse
   End With
   Target = ""
End If
Application.EnableEvents = True
End Sub
Cảm ơn 2 anh rất nhiều ạ. Tối nay em sẽ test rồi có gì em hỏi tiếp ạ. :)
 
Code của mình thì đơn giản, có thể bạn sẽ tự điều chỉnh khi cần. Vì đơn giản nên không trọn vẹn lắm
Copy code cho vào sheet nào tùy ý thích. Code sẽ có hiệu lực trong phạm vi A1:J100.
Bạn có thể sửa lại vùng này cho phù hợp
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, [A1:J100]) Is Nothing Then
   Dim L, T, W, H, n, m
   With Target
      L = .Left: T = .Top
      W = .Width: H = .Height
      n = Choose(.Value, 92, 9, 10, 1, 7)
      m = Choose(.Value, vbGreen, vbCyan, vbBlue, vbYellow, vbRed)
   End With
   With ActiveSheet.Shapes.AddShape(n, L, T, W, H)
      .Name = "Shape" & Target.Value
      .Fill.ForeColor.RGB = m
      .Line.Visible = msoFalse
   End With
   Target = ""
End If
Application.EnableEvents = True
End Sub

Người ta đã có sẵn các shape trên sheet rồi mà lại tự tạo các shape loại khác là sao? Rồi chúng chả ăn nhập gì với những shape + diễn giải đã có trên sheet. Người dùng nhìn những diễn giải rồi nhìn những shape được tạo thì chả thấy đâu.
Tạo shape đâu có khó gì. Khó là không biết người hỏi sẽ lấy thông tin ở đâu hay tự gõ để từ thông tin đó tạo shape thích hợp mà thôi.
 
Lần chỉnh sửa cuối:
Người ta đã có sẵn các shape trên sheet rồi mà lại tự tạo các shape loại khác là sao? Rồi chúng chả ăn nhập gì với những shape + diễn giải đã có trên sheet. Người dùng nhìn những diễn giải rồi nhìn những shape được tạo thì chả thấy đâu.
Tạo shape đâu có khó gì. Khó là không biết người hỏi sẽ lấy thông tin ở đâu hay tự gõ để từ thông tin đó tạo shape thích hợp mà thôi.
Chỉ mới là 1 cách thôi anh ơi. Thật ra cách tốt nhất là dùng shape có sẵn của chủ thớt. Tạo 1 sheet chứa shapes. Dùng sự kiện change để lấy sheet qua. Nhưng cứ để xem coi chủ thớt phản ứng sao cái đã rồi tính.
Phải cho lùng bùng chút mới được
 
Chỉ mới là 1 cách thôi anh ơi. Thật ra cách tốt nhất là dùng shape có sẵn của chủ thớt. Tạo 1 sheet chứa shapes. Dùng sự kiện change để lấy sheet qua. Nhưng cứ để xem coi chủ thớt phản ứng sao cái đã rồi tính.
Tạo sheet chứa shapes là thế nào? Trên mỗi sheet đã có sẵn shapes + diễn giải rồi mà. Vd. trên sheet Body đã có ở A1, A2, A3, G1, G2

Phải cho lùng bùng chút mới được

Hiểu rồi. Làm chuẩn ngay người ta "nhặt rồi đi" luôn.
 
Cái file của anh ndu96081631 là chuẩn luôn đấy ạ. --=0
Còn của anh quanghai1969 thì thật sự là em không biết ứng dụng thế nào ạ. :-=
 
Đọc đoạn code của anh quanghai1969 thì em hiểu đc thế này thôi ạ:
PHP:
If Not Intersect(Target, [A1:J100]) Is Nothing Then
Đoạn này là vùng áp dụng.
PHP:
      m = Choose(.Value, vbGreen, vbCyan, vbBlue, vbYellow, vbRed)
Đoạn này là tô màu.
PHP:
   With ActiveSheet.Shapes.AddShape(n, L, T, W, H)
Đoạn này là các hình tương ứng.
 
Code lại theo yêu cầu của khán giả. Tại sheet2 từ vùng A1 đến J100, nhập thử các số từ 1 đến 5
 

File đính kèm

Code lại theo yêu cầu của khán giả. Tại sheet2 từ vùng A1 đến J100, nhập thử các số từ 1 đến 5
Quá ngon ạ. --=0
Nhưng em thấy code trước của anh khi thay đổi chiều rộng hoặc chiều cao của cell thì shape nó tự thay đổi theo. Nhưng code lần này thì ko đc như thế ạ. :-=
Có cách nào chỉnh thêm cái đó thì là hoàn hảo luôn ạ. --=0
 
Quá ngon ạ. --=0
Nhưng em thấy code trước của anh khi thay đổi chiều rộng hoặc chiều cao của cell thì shape nó tự thay đổi theo. Nhưng code lần này thì ko đc như thế ạ. :-=
Có cách nào chỉnh thêm cái đó thì là hoàn hảo luôn ạ. --=0
Trong code có mấy chỗ +10 hay là -5 gì đó, xoá hết là được
 
Bỏ Application.CutCopyMode = False đi vì "không phải lúc này.", không có "đường đứt đoạn" nào cả.
Câu này em quên xoá, trước khi thêm cái vụ thoat:

Nếu bạn dùng
Mã:
ActiveSheet.Paste [COLOR=#ff0000]Target[/COLOR]

thì bỏ được
Mã:
.Top = Target.Top
.Left = Target.Left
Cái này hoàn toàn mới với em, đây là lần đầu tiên em thấy và học được.
Bạn hãy thêm Name cho shape để xóa cũ trước khi tạo mới, vd. là địa chỉ của Target. Vì nếu người ta gõ lại vài lần thì sẽ có shape "rác" Gợi ý ... À mà chưa gợi ý vội.
Em có nghĩ đến chuyện thêm name rồi, nhưng lấn cấn chưa có hướng giải quyết khi muốn thay đổi shape. Theo anh thì làm cách nào thuận tiện?
 
Câu này em quên xoá, trước khi thêm cái vụ thoat:


Cái này hoàn toàn mới với em, đây là lần đầu tiên em thấy và học được.

Em có nghĩ đến chuyện thêm name rồi, nhưng lấn cấn chưa có hướng giải quyết khi muốn thay đổi shape. Theo anh thì làm cách nào thuận tiện?

Mã:
   ActiveSheet.Paste Target
   With Selection
      .Height = Target.Height
      .Width = Target.Width
      .ShapeRange.Item(1).Name = Target.Address
   End With
 
Một giải pháp khác cho bạn đó là sử dụng Font như tôi đã nói trong bài trước.
Bạn Copy Font đính kèm vào thư mục Font của Window, thoát hoàn toàn Excel rồi mở lại.

Gõ 1, 2, 3, 4, 5 trong 1 vùng và chọn font DHN Shape.
Bạn sẽ thấy các icon hiện ra như font bình thường, cách định dạng như font và dung lượng file thì rất nhỏ.
 

File đính kèm

Mã:
   ActiveSheet.Paste Target
   With Selection
      .Height = Target.Height
      .Width = Target.Width
      .ShapeRange.Item(1).Name = Target.Address
   End With
Oh em hiểu rồi. Không nghĩ ra được cái Target.Address. Vậy không thể xóa nhầm ô nào cả.
 
Một giải pháp khác cho bạn đó là sử dụng Font như tôi đã nói trong bài trước.
Bạn Copy Font đính kèm vào thư mục Font của Window, thoát hoàn toàn Excel rồi mở lại.

Gõ 1, 2, 3, 4, 5 trong 1 vùng và chọn font DHN Shape.
Bạn sẽ thấy các icon hiện ra như font bình thường, cách định dạng như font và dung lượng file thì rất nhỏ.
Cách này của bác cũng hay và gọn nhẹ nữa. Nhưng em đang cần in ra có màu ạ. --=0
 
Mã:
   ActiveSheet.Paste Target
   With Selection
      .Height = Target.Height
      .Width = Target.Width
      .ShapeRange.Item(1).Name = Target.Address
   End With
Nếu thay đoạn trên cho đoạn này của anh quanghai1969:
Mã:
ActiveSheet.Paste
   With Selection
      .Top = Target.Top + 5
      .Left = Target.Left + 5
      .Height = Target.Height - 10
      .Width = Target.Width - 10
   End With
Thì khi thay đổi chiều cao, shape cũng thay đổi theo. Nhưng thay đổi chiều rộng thì shape ko thay đổi, vẫn giữ nguyên độ rộng ban đầu mặc định của cell ạ. **~**
 
Cách này của bác cũng hay và gọn nhẹ nữa. Nhưng em đang cần in ra có màu ạ. --=0
Bạn đã đọc kỹ tôi đã viết rằng đó là Font chưa?
nó là Font thì bạn định dạng như Font, tô màu, thay đổi kích cỡ hay làm gì cũng được, bạn có thể dùng Condition format để tô màu có điều kiện, Font mà.
 
Bạn đã đọc kỹ tôi đã viết rằng đó là Font chưa?
nó là Font thì bạn định dạng như Font, tô màu, thay đổi kích cỡ hay làm gì cũng được, bạn có thể dùng Condition format để tô màu có điều kiện, Font mà.
À đúng, em vừa đi uống về nên hơi ... --=0
 
Có anh nào có thể làm theo kiểu Data Validation đc ko ạ? Nốt cái đấy là đủ bộ, ai thik cách nào thì làm theo cách đấy ạ. --=0
 
Có anh nào có thể làm theo kiểu Data Validation đc ko ạ? Nốt cái đấy là đủ bộ, ai thik cách nào thì làm theo cách đấy ạ. --=0
Thay vì gõ vào cell không sướng hơn hay sao, tội gì phải bấm cái validation rồi phải chọn.
Viết code thì được hết đó, nhưng có đáng không?
 
Mã:
   ActiveSheet.Paste Target
   With Selection
      .Height = Target.Height
      .Width = Target.Width
      [COLOR=#ff0000].ShapeRange.Item(1)[/COLOR].Name = Target.Address
   End With
Bắt giò anh được chỗ này bị thừa
Mã:
   ActiveSheet.Paste Target
   With Selection
      .Height = Target.Height
      .Width = Target.Width
      .Name = Target.Address
   End With
 
Bắt giò anh được chỗ này bị thừa
Mã:
   ActiveSheet.Paste Target
   With Selection
      .Height = Target.Height
      .Width = Target.Width
      .Name = Target.Address
   End With

Ờ đúng. Nếu tôi thử viết thế thì chắc chắn cũng sẽ thành công. Thế mà lại không thử. Nhiều khi máy móc quá mà không nghĩ tới cái đơn giản nhất.
Cám ơn bạn về bài học này. Ngu ngơ như thế thì tôi cũng phải phạt tôi. Trong vụ này không thể có tình tiết giảm nhẹ gì cả. Tuần này trừ đi mấy cốc. He he.
 
Thay vì gõ vào cell không sướng hơn hay sao, tội gì phải bấm cái validation rồi phải chọn.
Viết code thì được hết đó, nhưng có đáng không?
Ý em là để cho phong phú thêm thôi ạ. --=0
Với cả một số trường hợp nó hơi khù khoằm, bít đâu lại cần đến ạ. --=0
 

File đính kèm

Thử file này cũng thú vị đây.
Vùng có tác dụng hiện tại từ C1:Z100

Thú vị thì có đây... nhưng có tình huống thế này:

[video=youtube;eFXj1XSRFbQ]https://www.youtube.com/watch?v=eFXj1XSRFbQ&feature=youtu.be[/video]

thì mình sẽ sửa code sao đây? --=0
 
Thú vị thì có đây... nhưng có tình huống thế này:

[video=youtube;eFXj1XSRFbQ]https://www.youtube.com/watch?v=eFXj1XSRFbQ&feature=youtu.be[/video]

thì mình sẽ sửa code sao đây? --=0
Vụ này mới vô lý thường kiệt nè. Ai kêu xóa của người ta chi rồi nói.
Nhưng đây cũng là cái bẫy cho tương lai đấy anh ơi. Sau này mà chủ thớt không quay vào GPE mới là lạ.
Mà muốn xử lý thì có gì phức tạp đâu. Anh thấy tại sao em để có 1 sheet thôi hay không?
 
Vụ này mới vô lý thường kiệt nè. Ai kêu xóa của người ta chi rồi nói.
Nhưng đây cũng là cái bẫy cho tương lai đấy anh ơi. Sau này mà chủ thớt không quay vào GPE mới là lạ.
Mà muốn xử lý thì có gì phức tạp đâu. Anh thấy tại sao em để có 1 sheet thôi hay không?
Cần j phải sau này ạ. Em đang ngồi test đây ạ. --=0
Em học hỏi là chính chứ ko phải kiểu giải quyết vấn đề xong là phắn luôn đâu ạ. --=0
 
Vụ này mới vô lý thường kiệt nè. Ai kêu xóa của người ta chi rồi nói.

Phải có tình huống vậy tôi mới nói chứ!
Cách đây hơn 1 năm, tôi cũng được đồng nghiệp trong cty nhờ làm file đánh giá năng lực. Lúc đầu tôi cũng dùng Shape (cho đơn giản). Sau đó đã bị tình huống này khiến phải sửa tới sửa lui hoài (dân không biết xài cứ chọc phá tùm lum) nên cuối cùng mới nghĩ ra cách dùng comment
Tôi đã từng hỏi chủ đề như vậy tại đây vào năm trước:
http://www.giaiphapexcel.com/forum/showthread.php?79452-Chuyển-hình-trên-bảng-tính-vào-Comment
 
Cần j phải sau này ạ. Em đang ngồi test đây ạ. --=0
Em học hỏi là chính chứ ko phải kiểu giải quyết vấn đề xong là phắn luôn đâu ạ. --=0
Thì giờ cứ mần cho kỹ cái code trong file đi. Bao nhiêu đó thôi cũng nhức đầu rồi. Nếu hiểu rồi thì tự nhiên sẽ biết cách làm sao cho không ai xóa được mấy cái shape gốc liền.
 
Phải có tình huống vậy tôi mới nói chứ!
Cách đây hơn 1 năm, tôi cũng được đồng nghiệp trong cty nhờ làm file đánh giá năng lực. Lúc đầu tôi cũng dùng Shape (cho đơn giản). Sau đó đã bị tình huống này khiến phải sửa tới sửa lui hoài (dân không biết xài cứ chọc phá tùm lum) nên cuối cùng mới nghĩ ra cách dùng comment
Tôi đã từng hỏi chủ đề như vậy tại đây vào năm trước:
http://www.giaiphapexcel.com/forum/showthread.php?79452-Chuyển-hình-trên-bảng-tính-vào-Comment
Đúng là cho vào comment thì cũng hay lắm, nhưng em lại không quen cách đó nên đành xài cái mà em thạo hơn.

Thực ra em đã có ý định cho shape đó vào 1 sheet và ẩn sheet đó, khi cần thì gọi ra. Nhưng thích để vậy cho vui, ai xóa rồi thì .. hic hic thôi.
 
Lần chỉnh sửa cuối:
Thì giờ cứ mần cho kỹ cái code trong file đi. Bao nhiêu đó thôi cũng nhức đầu rồi. Nếu hiểu rồi thì tự nhiên sẽ biết cách làm sao cho không ai xóa được mấy cái shape gốc liền.
Em chưa bít chữ nào về VBA cả ạ. Em đang tính mua cuốn "Lập trình VBA trong Excel cho người mới bắt đầu" của ThS. Phan Tự Hướng về đọc. Liệu bắt đầu học bằng cuốn đó đc ko ạ?
 
Còn 1 vấn đề nữa: Sau khi đánh giá xong thì người ta phải làm công việc TỔNG KẾT (cộng trừ nhân chia gì đó). Vậy nên buộc ta phải gõ số (hoặc ký hiệu quy định) vào cell rồi mới cho hiện hình ----> Cuối cùng thì ta sẽ vô tư mà cộng trừ nhân chia nhé, cái hình chỉ mang tính chất minh họa (nó tuyệt đối không phải là thành phần chính)
 
Còn 1 vấn đề nữa: Sau khi đánh giá xong thì người ta phải làm công việc TỔNG KẾT (cộng trừ nhân chia gì đó). Vậy nên buộc ta phải gõ số (hoặc ký hiệu quy định) vào cell rồi mới cho hiện hình ----> Cuối cùng thì ta sẽ vô tư mà cộng trừ nhân chia nhé, cái hình chỉ mang tính chất minh họa (nó tuyệt đối không phải là thành phần chính)
Cái này đúng là cũng cần thiết lắm đấy ạ. --=0
Vậy là nếu như add shape bằng cách dùng font như của anh DHN46 thì sẽ ko đếm đc đúng ko ạ?
 
Cái này đúng là cũng cần thiết lắm đấy ạ. --=0
Vậy là nếu như add shape bằng cách dùng font như của anh DHN46 thì sẽ ko đếm đc đúng ko ạ?
Bạn đã bao giờ đếm với các số 1,2,3,4,5....chưa? Nếu bạn đếm được thì dùng Font đếm được. Nên thử đi bạn.

Như tôi đã nói trong topic này: việc dùng font để tạo file đánh giá kỹ năng tôi đã làm (áp dụng với công ty khoảng trên 6000 công nhân viên).
 
Bạn đã bao giờ đếm với các số 1,2,3,4,5....chưa? Nếu bạn đếm được thì dùng Font đếm được. Nên thử đi bạn.

Như tôi đã nói trong topic này: việc dùng font để tạo file đánh giá kỹ năng tôi đã làm (áp dụng với công ty khoảng trên 6000 công nhân viên).
Em nhầm. Vẫn đếm ngon. &&&%$R
Cách dùng font có vẻ vẫn hiệu quả nhất. --=0
Nhưng em muốn hỏi thêm các cách khác để có thể thêm nhiều lựa chọn, áp dụng cho nhiều tình huống khác nhau. --=0
 
Em nhầm. Vẫn đếm ngon. &&&%$R
Cách dùng font có vẻ vẫn hiệu quả nhất. --=0
Nhưng em muốn hỏi thêm các cách khác để có thể thêm nhiều lựa chọn, áp dụng cho nhiều tình huống khác nhau. --=0
Bạn hãy tìm các chương trình tạo Font về tự làm sẽ chủ động cho bạn. Tôi làm trên Font Creator. Bạn dựa vào các từ khóa mà tìm kiếm.

Cái hay của việc dùng Font trong trường hợp này là:

1/ Tùy biến được rất nhiều dạng Icon mà bạn muốn sử dụng.
2/ Thao tác định dạng nhanh như font thường và áp dụng được công thức Excel cho tính toán
3/ Không cần phải lập trình
4/ Dung lượng file rất nhỏ, khi dùng Shape mà đánh giá tới hàng trăm nhân viên thì dung lượng sẽ phình ra nhiều.

Nhược điểm
1/ Máy sử dụng phải được cài đặt font, nếu không sẽ không hiển thị Icon.
 
Code lại theo yêu cầu của khán giả. Tại sheet2 từ vùng A1 đến J100, nhập thử các số từ 1 đến 5

Bỏ Application.CutCopyMode = False đi vì "không phải lúc này.", không có "đường đứt đoạn" nào cả.

Đây mới là cách chuẩn. Chỉ copy/paste thôi chứ Comment chả để làm gì cả. Tạo comment cũng đồng nghĩa với tạo 2 object: comment (non graphic object) và shape (graphic object). Ai không tin thì cứ tự Insert Comment bằng tay, tức không có Fill.UserPicture gì cả, rồi dùng code đếm xem có bao nhiêu object Comment và bao nhiêu object Shape. Hình hài cái graphic object Shape nó thế nào thì cứ dí chuột vào ô có comment thì sẽ được chiêm ngưỡng.

Nếu bạn dùng
Mã:
ActiveSheet.Paste Target
thì bỏ được
Mã:
.Top = Target.Top
.Left = Target.Left

Bạn hãy thêm Name cho shape để xóa cũ trước khi tạo mới, vd. là địa chỉ của Target. Vì nếu người ta gõ lại vài lần thì sẽ có shape "rác" Gợi ý ... À mà chưa gợi ý vội.
 
Em chưa bít chữ nào về VBA cả ạ. Em đang tính mua cuốn "Lập trình VBA trong Excel cho người mới bắt đầu" của ThS. Phan Tự Hướng về đọc. Liệu bắt đầu học bằng cuốn đó đc ko ạ?
"Càng học càng thấy mình dốt. Không học khỏi dốt." "Bể dốt mênh mông, quay đầu là bờ."
 
Bạn hãy tìm các chương trình tạo Font về tự làm sẽ chủ động cho bạn. Tôi làm trên Font Creator. Bạn dựa vào các từ khóa mà tìm kiếm.

Font thì thiếu gì! Nội cái đống ký tự đặt biệt trong Excel đã có cả rừng rồi, vài chục ngàn ký tự, tha hồ lựa vài cái như ý mà không cần phải cài thêm font nào cả
 
Font thì thiếu gì! Nội cái đống ký tự đặt biệt trong Excel đã có cả rừng rồi, vài chục ngàn ký tự, tha hồ lựa vài cái như ý mà không cần phải cài thêm font nào cả
Nhưng mà không có cái cần tìm thầy ơi. Ví dụ như nếu đánh giá theo kiểu 100%,75%,50%,25%,0% tương ứng với cái vòng tròn nó khuyết đi phần tương ứng.
 
Nhưng mà không có cái cần tìm thầy ơi. Ví dụ như nếu đánh giá theo kiểu 100%,75%,50%,25%,0% tương ứng với cái vòng tròn nó khuyết đi phần tương ứng.

5 ký tự này tượng trưng cho 5 giá trị 0%, 25%, 50%, 75% và 100% chắc là được chứ:


◔ ◑ ◕
-----------
Ngoài ra cũng có thể dùng Conditional Formating (Icon sets) để có 5 ký tự trên
 
Lần chỉnh sửa cuối:
5 ký tự này tượng trưng cho 5 giá trị 0%, 25%, 50%, 75% và 100% chắc là được chứ:


◔ ◑ ◕
-----------
Ngoài ra cũng có thể dùng Conditional Formating (Icon sets) để có 5 ký tự trên
Thầy tìm mấy cái hình đó như thế thế, dhn46 tìm mãi mà không có thấy mà phải tự tạo ah.

Như thầy đã thấy nếu tìm thì cũng khó và khó nhớ các giá trị, icon set thì chỉ áp dụng cho Excel 2007 trở lên còn 2003 thì chịu trong khi rất nhiều nơi Ex2003 vẫn sử dụng chủ yếu.

Việc phân chia công việc cho nhiều người thậm chí họ cũng chỉ biết sử dụng sơ sơ Excel thì càng đơn giản càng tốt.
 
Anh quanghai1969 nói hay quá, đúng là càng học thì thấy mình càng dốt, nhưng phải học anh à.

càng học thì bể dốt càng phía trước càng rộng ra, nhưng chớ như kẻ vừa bị phê đã quay lại .... ngay
hãy tiến về phía trước, học cũng phải hướng lên. chúc bạn học tốt
 
Thầy tìm mấy cái hình đó như thế thế, dhn46 tìm mãi mà không có thấy mà phải tự tạo ah.
.

Xem hình biết liền

Capture.JPG

























Khung Font ta chọn "Arial Unicode MS" nhé ---> Có cả thúng
Rảnh rỗi ta cũng hay duyệt qua mấy cái symbol và ghi nhớ những ký tự đặc biệt mai này có thể mình sẽ cần đến. Vì vậy mà tôi biết chắc là có. Thậm chí mấy cái ký tự giống như Shape của Quang Hải cũng có luôn
--------------------------------------------------------------------
]
Như thầy đã thấy nếu tìm thì cũng khó và khó nhớ các giá trị]
Kiên nhẫn thôi! Tôi có 1 file Symbol chứa trên 50000 ký tự đặc biệt. Để tìm 1 ký tự trong đó cũng đâu phải chuyện dễ... nhưng kiên nhẫn trong 30 phút cũng ra. Ẹc... Ẹc...
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom