Tự động chèn object?

Liên hệ QC

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

  • DanhGia.rar
    132 KB · Đọc: 48
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

  • Shape2Comment_2.xlsm
    46.6 KB · Đọc: 28
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 ạ. :-=
 
Web KT

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

Back
Top Bottom