Cách liên kết Text Box với Cell (1 người xem)

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

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

pro8x

Thành viên hoạt động
Tham gia
3/11/11
Bài viết
142
Được thích
24
Nhờ mọi người giúp mình cái này với. Minhf có 4 Text Box, trong mỗi text box là 1 số khác nhau(1,2,3,4). Làm thế nào để khi mình nhập các số này vào 1 Cell quy định thì textBox có số tương ứng có màu đỏ. Cụ thể mọi người xem ảnh nhe
 

File đính kèm

Nhờ mọi người giúp mình cái này với. Minhf có 4 Text Box, trong mỗi text box là 1 số khác nhau(1,2,3,4). Làm thế nào để khi mình nhập các số này vào 1 Cell quy định thì textBox có số tương ứng có màu đỏ. Cụ thể mọi người xem ảnh nhe
Có lẽ vấn đề của bạn phải giải quyết bằng VBA.
Nếu sử dụng chức năng sẵn có của Excel thì mình làm như sau:
1. Nhập các số 1, 2, 3, 4 vào một vùng thay cho 4 Textbox (vùng F4:F7 chẳng hạn).
2. Chọn vùng này và thiết lập Conditional Formatting với công thức:
Mã:
=INDEX($B:$B,MATCH(9^99,$B:$B,1))=$F4
Bạn tham khảo trong file nhé.
 

File đính kèm

Nhờ mọi người giúp mình cái này với. Minhf có 4 Text Box, trong mỗi text box là 1 số khác nhau(1,2,3,4). Làm thế nào để khi mình nhập các số này vào 1 Cell quy định thì textBox có số tương ứng có màu đỏ. Cụ thể mọi người xem ảnh nhe
Làm như thế này có đúng ý bạn không, nhập số vào B4? (Cái này dùng VBA nên nếu không biết VBA thì bạn khó áp dụng những cái tương tự nha)
 

File đính kèm

Nhờ mọi người giúp mình cái này với. Minhf có 4 Text Box, trong mỗi text box là 1 số khác nhau(1,2,3,4). Làm thế nào để khi mình nhập các số này vào 1 Cell quy định thì textBox có số tương ứng có màu đỏ. Cụ thể mọi người xem ảnh nhe

Chợt nghĩ ra trò này thấy cũng hay hay, post lên cho các bạn tham khảo
Nói chung là tô màu cho shape theo điều kiện mà không cần dùng đến code
Ẹc... Ẹc...

Untitled.jpg
 

File đính kèm

rất cảm ơn mọi người đã giúp mình.
Mình có vấn đề là Text Box của mình có 10 cái tương ứng các số tù 1->10.Vùng nhập dữ liệu là B4:B10. Khi mình nhập các số bất kì từ 1->10 vào vùng này thì các Texbox tương ứng sẽ được tô màu. Mong mọi người giúp đỡ.
PS:mình dã xem và sửa theo cách của mọi người nhưng không khả quan lắm
 
rất cảm ơn mọi người đã giúp mình.
Mình có vấn đề là Text Box của mình có 10 cái tương ứng các số tù 1->10.Vùng nhập dữ liệu là B4:B10. Khi mình nhập các số bất kì từ 1->10 vào vùng này thì các Texbox tương ứng sẽ được tô màu. Mong mọi người giúp đỡ.
PS:mình dã xem và sửa theo cách của mọi người nhưng không khả quan lắm
Theo tôi bạn muốn gì thì cũng phải có dữ liệu thực, tại Topic này đã có khá nhiều cách: Cf trực tiếp, Cf giấn tiếp qua chụp ảnh, VBA. Cái nào cũng có thể áp dũng nhưng vấn đề là bạn không biết cách vận dụng mà thôi.
Vậy đưa dữ liệu thực lên mọi người sẽ giúp bạn!
 
Theo tôi bạn muốn gì thì cũng phải có dữ liệu thực, tại Topic này đã có khá nhiều cách: Cf trực tiếp, Cf giấn tiếp qua chụp ảnh, VBA. Cái nào cũng có thể áp dũng nhưng vấn đề là bạn không biết cách vận dụng mà thôi.
Vậy đưa dữ liệu thực lên mọi người sẽ giúp bạn!
cảm ơn bạn đã nhắc nhở.Mình up file dữ liệu thực mong mọi người giúp đỡ.
Cụ thẻ như sau: Sản phẩm được đánh dấu các vị trí hay sảy ra lỗi, hàng ngày sảy ra lỗi ở vị trí nào sẽ nhập số của vị trí đấy vào cột "Vị trí lỗi" (Vị trí Lỗi này hàng ngày là không giống nhau)
 

File đính kèm

cảm ơn bạn đã nhắc nhở.Mình up file dữ liệu thực mong mọi người giúp đỡ.
Cụ thẻ như sau: Sản phẩm được đánh dấu các vị trí hay sảy ra lỗi, hàng ngày sảy ra lỗi ở vị trí nào sẽ nhập số của vị trí đấy vào cột "Vị trí lỗi" (Vị trí Lỗi này hàng ngày là không giống nhau)

Hỏi lại: Vị trí lỗi chỉ nhập tại B4 hay còn nhập ở đâu nữa? Nếu còn nhập chổ khác (B5 chẳng hạn) thì sao bạn không ví dụ cho tổng quát chút?
 
cảm ơn bạn đã nhắc nhở.Mình up file dữ liệu thực mong mọi người giúp đỡ.
Cụ thẻ như sau: Sản phẩm được đánh dấu các vị trí hay sảy ra lỗi, hàng ngày sảy ra lỗi ở vị trí nào sẽ nhập số của vị trí đấy vào cột "Vị trí lỗi" (Vị trí Lỗi này hàng ngày là không giống nhau)
Thôi thì mình cứ "Làm liều" trúng thì tốt mà không trúng thì...làm lại nhé!
 

File đính kèm

File đính kèm

Hi.chào cả nhà.Trước e có nhờ các thầy về vấn đề tô màu này.Hiện nay em có áp dụng vào 1 file mới, file có nhiều ảnh dung lượng tầm 6mb, em có áp dụng PP của thầy ndu96081631 chỉ dùng condition, nhưng áp dụng cách này file chạy rất chậm.Vậy mong các thầy xem có cách khác k ah.
P/S: File mới tương tự file e đã up nhưng khác là: Có 2 ĐK tô mầu. Nếu texbox trùng với giá trị từ ô B4:B13 thì tô chữ đậm màu đỏ, No Fill. Nếu texbox trùng với giá trị từ C4:C13 thì chữ nghiêng màu xanh,No fill. Em có sủa code theo VD của thầy dhn46 nhưng không được.Vậy mong các thầy giúp
 
Vấn đề tô màu cho chữ trong texbox theo điều kiện

Chào các thầy, e có 1 file gồm khoảng 60 sheets, mỗi sheet đều có hình ảnh. (file tầm 6mb).
trên hình ảnh được đánh dấu vị trí bằng textbox có số, e muuón nhờ các thầy viết cho e đoạn code tô màu theo điều kiện: khi nhập giá trị từ B4:B13 thì texbox có số tương ứng chữ màu đỏ, Còn khi nhập vào C4:C13 thì chữ trong texbox tương ứng màu xanh ( giá trị giũa b cà C là k giống nhau).Mong các thầy giúp, file đính kèm là e ví dụ 1 sheet
P/S: e có làm băng condition nhưng file nó nặng và chậm quá
 

File đính kèm

Mọi người chưa xong thì bạn giục, mà làm giúp bạn phải convert rồi dọn dẹp lỉnh kỉnh quá

Bạn đổi tên Oval từ 1 đến 10 thành Sh01--Sh10 (Đúng số trong ô) rồi dùng Code sau:


Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i, Cl As Range
If Not Intersect(Target, [B4:C13]) Is Nothing Then
  If Target.Cells.Count <> 1 Then Exit Sub
     If Evaluate("=COUNTIF($B$4:$C$13," & Target & ")") > 1 Then
        Target = ""
            Target.Select
                Exit Sub
                    End If
                        For i = 1 To 10
                            Set Cl = Sheet1.Range("B4:C13").Find(i, LookIn:=xlValues)
                                Shapes("Sh" & Format(i, "00")).Select
                                    With Selection
                                        If Cl Is Nothing Then
                                            .ShapeRange.Fill.Visible = msoFalse
                                                .Font.ColorIndex = 1
                                            ElseIf Cl.Column = 2 Then
                                     .ShapeRange.Fill.ForeColor.SchemeColor = 13
                                .ShapeRange.Fill.Visible = msoTrue
                            .ShapeRange.Fill.Solid
                      .Font.ColorIndex = 3
                    ElseIf Cl.Column = 3 Then
                .ShapeRange.Fill.ForeColor.SchemeColor = 43
            .ShapeRange.Fill.Visible = msoTrue
        .ShapeRange.Fill.Solid
    .Font.ColorIndex = 5
  End If
End With
Next
Target.Select
End If
End Sub



Code này đã kiểm tra nếu bạn nhập trùng số sẽ xoá.
Code này bạn bỏ vào Thisworkbook (SheetChange và thay Activesheet=Sh) thì nó chạy cả 60 sheet của bạn như vậy
 

File đính kèm

Lần chỉnh sửa cuối:
Mọi người chưa xong thì bạn giục, mà làm giúp bạn phải convert rồi dọn dẹp lỉnh kỉnh quá

Bạn đổi tên Oval từ 1 đến 10 thành Sh01--Sh10 (Đúng số trong ô) rồi dùng Code sau:


Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i, Cl As Range
If Not Intersect(Target, [B4:C13]) Is Nothing Then
  If Target.Cells.Count <> 1 Then Exit Sub
     If Evaluate("=COUNTIF($B$4:$C$13," & Target & ")") > 1 Then
        Target = ""
            Target.Select
                Exit Sub
                    End If
                        For i = 1 To 10
                            Set Cl = Sheet1.Range("B4:C13").Find(i, LookIn:=xlValues)
                                Shapes("Sh" & Format(i, "00")).Select
                                    With Selection
                                        If Cl Is Nothing Then
                                            .ShapeRange.Fill.Visible = msoFalse
                                                .Font.ColorIndex = 1
                                            ElseIf Cl.Column = 2 Then
                                     .ShapeRange.Fill.ForeColor.SchemeColor = 13
                                .ShapeRange.Fill.Visible = msoTrue
                            .ShapeRange.Fill.Solid
                      .Font.ColorIndex = 3
                    ElseIf Cl.Column = 3 Then
                .ShapeRange.Fill.ForeColor.SchemeColor = 43
            .ShapeRange.Fill.Visible = msoTrue
        .ShapeRange.Fill.Solid
    .Font.ColorIndex = 5
  End If
End With
Next
Target.Select
End If
End Sub



Code này đã kiểm tra nếu bạn nhập trùng số sẽ xoá.
Code này bạn bỏ vào Thisworkbook (SheetChange và thay Activesheet=Sh) thì nó chạy cả 60 sheet của bạn như vậy

Chưa bàn về giải thuật, chỉ xét phần CÁCH TRÌNH BÀY CODE VBA thì theo em anh sealand bố trí lung tung quá, thụt ra, thụt vào vô tôi vạ (chẳng có quy luật gì). Nhìn code này mà theo dõi được đâu là cặp IF.. End IF cũng... chết
(xin lỗi anh sealand nha)
Mạn phép trình bày lại:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i, Cl As Range
  If Not Intersect(Target, [B4:C13]) Is Nothing Then
    If Target.Cells.Count <> 1 Then Exit Sub
    If Evaluate("=COUNTIF($B$4:$C$13," & Target & ")") > 1 Then
      Target = ""
      Target.Select
      Exit Sub
    End If
    For i = 1 To 10
      Set Cl = Sheet1.Range("B4:C13").Find(i, LookIn:=xlValues)
      Shapes("Sh" & Format(i, "00")).Select
      With Selection
        If Cl Is Nothing Then
          .ShapeRange.Fill.Visible = msoFalse
          .Font.ColorIndex = 1
        ElseIf Cl.Column = 2 Then
          .ShapeRange.Fill.ForeColor.SchemeColor = 13
          .ShapeRange.Fill.Visible = msoTrue
          .ShapeRange.Fill.Solid
          .Font.ColorIndex = 3
        ElseIf Cl.Column = 3 Then
          .ShapeRange.Fill.ForeColor.SchemeColor = 43
          .ShapeRange.Fill.Visible = msoTrue
          .ShapeRange.Fill.Solid
          .Font.ColorIndex = 5
        End If
      End With
    Next
    Target.Select
  End If
End Sub
Dễ nhìn trước, xong mới phân tích sau
 
Hì, để thì nó dày đặc nên mình cứ đẩy đại chứ có chia theo nhóm gì đâu.
 
Hì, để thì nó dày đặc nên mình cứ đẩy đại chứ có chia theo nhóm gì đâu.

Với 1 code dài (vài trang) mà không bố trí đàng hoàng sẽ khó theo dõi lắm anh à! Bởi vậy em có thói quen khi copy code dù của bất kỳ ai để thử nghiệm thì điều đầu tiên em phải TRÌNH BÀY lại cái đã
----------------------------
Riêng phần code bài này em làm khác anh 1 chút. Không cần đổi tên Shape gì cả, cứ thằng nào là Oval thì tìm
1> Code trong Module
Mã:
Public Const DEFAULT_C_BACK = vbWhite
Public Const DEFAULT_C_TEXT = vbBlack
Function ShapeColorChange(ByVal objType As Object, ByVal rngSearch As Range) As Boolean
  Dim text As String
  Dim obj As Object, rFind As Range
  On Error Resume Next
  For Each obj In objType
    text = obj.ShapeRange.TextFrame.Characters.text
    Set rFind = rngSearch.Find(text, , xlValues, xlWhole)
    If Not rFind Is Nothing Then
      With obj.ShapeRange
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = rFind.Interior.color
        .TextFrame.Characters.Font.color = rFind.Font.color
      End With
      ShapeColorChange = True
    Else
      With obj.ShapeRange
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = DEFAULT_C_BACK
        .TextFrame.Characters.Font.color = DEFAULT_C_TEXT
      End With
      ShapeColorChange = False
    End If
  Next
End Function
2> Code sự kiện Change
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, bRet As Boolean
  On Error GoTo ExitSub
  If Not Intersect(Range("B4:C100"), Target) Is Nothing Then
    Set rng = Range("B4:C100")
    bRet = ShapeColorChange(Target.Parent.Ovals, rng)
  End If
ExitSub:
End Sub
Quy ước: Vùng dữ liệu tại cột B:C tô màu gì (cả nền và chữ) thì Oval sẽ được tô màu ấy
------------
Cũng dùng 1 vòng lập nhưng em duyệt qua các Oval, lấy Text của nó để tìm trên Range, cái nào thỏa điều kiện thì tô màu
Vì vậy, ưu điểm của nó là: Dù copy Range từ nơi khác Paste vào thì nó vẫn chạy đúng (không cần gõ từng cell)
 

File đính kèm

Nếu Ndu làm vậy đối với file ví dụ này thì OK, nhưng file thực tế có thêm Oval khác không liên quan hoặc nó có Text như vậy thì sao? Mình thì chỉ thích gọi đích danh vì không thể có 2 Oval cùng tên trên 1 sheet được.
 
Nếu Ndu làm vậy đối với file ví dụ này thì OK, nhưng file thực tế có thêm Oval khác không liên quan hoặc nó có Text như vậy thì sao? Mình thì chỉ thích gọi đích danh vì không thể có 2 Oval cùng tên trên 1 sheet được.

Cái đó do mình quyết định chứ anh
Tại sao lại vẽ 1 cái Oval hoàn toàn không liên quan đến bài toán mà không vẽ hình khác?
Mà cho dù là vậy, anh vẫn có giải pháp là GROUP toàn bộ những oval liên quan lại với nhau và dùng vòng lập duyệt theo group này ---> Quá đơn giản
(Giống trường hợp trong UserForm ta nhóm các control vào chung 1 Frame vậy)
 
Lần chỉnh sửa cuối:
Web KT

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

  • Dán lên cao
Trả lời
26
Đọc
10K
Back
Top Bottom