Lấy nội dung từ textbox lồng trong shape

Liên hệ QC

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
Chào cả nhà, cho mình hỏi cách lấy lấy chuỗi ký tự từ trong 1 textbox lồng trong shape (Shape và textbox được group với nhau). Mình gửi file nhờ các anh/chị/em xem giúp. Cảm ơn
 

File đính kèm

  • hoi_GPE2.xlsx
    10.2 KB · Đọc: 21
Bạn dùng code này thử xem.
Mã:
Public Sub GPE()
MsgBox Sheet1.Shapes.Item(1).GroupItems(11).TextEffect.Text
End Sub
 
Upvote 0
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.
 

File đính kèm

  • Master Floor Plan - 12 Apr 2016.xlsm
    652.9 KB · Đọc: 19
Upvote 0
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.
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
 
Upvote 0
Anh làm như sau:

1/ Đếm theo tên:

Mã:
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

2/ Đếm theo màu

Mã:
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
 
Upvote 0
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

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
 
Upvote 0
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
Đã 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.
 
Upvote 0
Cảm ơn hai bạn đã chỉ dẫn đường, mình sẽ đi theo con đường này. Xong sẽ đưa lên nhờ 2 bạn góp ý thêm.
 
Upvote 0
Web KT
Back
Top Bottom