Bảy Dzõ
Ngu Excel nhất GPE
- Tham gia
- 18/11/09
- Bài viết
- 565
- Được thích
- 1,361
- Nghề nghiệp
- Just for daily's rice
File của bạn đếm không được, lý do các bàn của bạn dữ liệu trong Texbox bạn nhưa Group nên đếm sai. Để kiểm tra bạn hãy nhóm TextBox vào các bạn tương ứng và sử dụng code sau để hiển thị nội dung trong các TexBox, từ đó bạn tự nghiên cứu thêm.Chào bạn giaiphap và các ace,
Mình gom mỗi nơi một chút để làm cái file về số lượng bàn đóng mở như đính kèm. Do ít kiến thức về VBA nên code nó hơi nhùng nhằng nhưng hiện tại nó làm việc được theo ý muốn. Nhờ bạn giaiphap và các anh chị em giúp giùm mình cách đếm số lượng bàn dựa theo:
1. Tên bàn: theo các ký tự trong textbox của shape ví dụ: BA, AR, TCB...
2. Màu của shapes: mỗi màu sẽ tương ứng với thơi gian hoạt động. Hiện tại mình có 5 khung giờ khác nhau.
Mong muốn kết quả sẽ là: có bao nhiêu bàn mở 24hrs với tên là "BA", "AR" v.v. Giống như là thống kê.
Mình đưa file thực lên luôn để tránh hỏi tới lui. Pass của VBA (nhằm để ngăn mấy bạn táy máy tay chân thôi chứ nó không là gì cả): binhminh
Cảm ơn mọi người.
Public Sub GPE()
Dim s As String, dt As Shape, i As Integer
For Each dt In Sheet1.Shapes
If dt.Type = 6 Then
For i = 1 To dt.GroupItems.Count
If dt.GroupItems(i).Type = 17 Then s = s & dt.GroupItems(i).TextEffect.Text & "; "
Next i
End If
Next dt
MsgBox s
End Sub
Sub CountShpBaseOnText()
Dim shp As Shape
Dim CompStr As String
Dim i As Long
CompStr = UCase(InputBox("Input apart of table name", "Information"))
For Each shp In Application.ActiveSheet.Shapes
If shp.Type = msoTextBox Then
If UCase(shp.TextFrame2.TextRange.Text) Like "*" & CompStr & "*" Then
i = i + 1
End If
End If
Next
MsgBox i
End Sub
Sub CountShpBaseOnColor()
Dim shp As Shape
Dim CompRange As Range
Dim CompColor As Long
Dim i As Long
Set CompRange = Application.InputBox("Select cell same table's color", "Information", Type:=8)
CompColor = CompRange.Interior.Color
Debug.Print CompColor
For Each shp In Application.ActiveSheet.Shapes
If shp.Name Like "Group*" Then
If shp.Fill.ForeColor.RGB = CompColor Then
i = i + 1
End If
End If
Next
MsgBox i
End Sub
File của bạn đếm không được, lý do các bàn của bạn dữ liệu trong Texbox bạn nhưa Group nên đếm sai. Để kiểm tra bạn hãy nhóm TextBox vào các bạn tương ứng và sử dụng code sau để hiển thị nội dung trong các TexBox, từ đó bạn tự nghiên cứu thêm.
Mã:Public Sub GPE() Dim s As String, dt As Shape, i As Integer For Each dt In Sheet1.Shapes If dt.Type = 6 Then For i = 1 To dt.GroupItems.Count If dt.GroupItems(i).Type = 17 Then s = s & dt.GroupItems(i).TextEffect.Text & "; " Next i End If Next dt MsgBox s End Sub
Đã lấy được Textbox rồi, việc còn lại là lấy màu và lấy giá trị so sánh thôi.Cảm ơn bạn. Mình nghĩ ra cách này không biết có được không? Thay vì số bàn hiện tại là 01, 02, 03... mình sẽ dựa vào tên bàn rồi thêm ký tự trước số là BA, AR, CR ... như thế có thể đếm được theo màu của bàn và loại bàn không bạn? Hy vọng bạn chỉ dẫn. Thân
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2