Tạo thanh menu xổ xuống trong Excel

Liên hệ QC

kienle7980

Thành viên mới
Tham gia
17/8/10
Bài viết
7
Được thích
5
Chào các cao nhân, hiện tại mình đang làm một bảng quản lý sản phẩm và có một số vướng mắc như sau:
Từ một bảng mã công việc cho trước mình muốn tạo một menu bar. Nhưng do hơi gà về cái này nên mong các cao nhân chỉ giáo
 

File đính kèm

  • Huongdan.rar
    297.4 KB · Đọc: 411
Chào các cao nhân, hiện tại mình đang làm một bảng quản lý sản phẩm và có một số vướng mắc như sau:
Từ một bảng mã công việc cho trước mình muốn tạo một menu bar. Nhưng do hơi gà về cái này nên mong các cao nhân chỉ giáo

Hình như bạn đang nói là cái Combobox hay List trong Validation thì phải, nếu là vậy thì vấn đề này đã nói nhiều trên diễn đàn rồi bạn. Bạn Search Google là tha hồ có cái bạn cần đó.
 
Hình như bạn đang nói là cái Combobox hay List trong Validation thì phải, nếu là vậy thì vấn đề này đã nói nhiều trên diễn đàn rồi bạn. Bạn Search Google là tha hồ có cái bạn cần đó.

Em cũng đã đọc nhiều rồi nhưng do mấy cái này em chưa rành lắm nên vẫn đang loay hoay chưa biết làm thế nào? Bác có thể giúp em giải quyết vấn đề này có được không?
 
Em cũng đã đọc nhiều rồi nhưng do mấy cái này em chưa rành lắm nên vẫn đang loay hoay chưa biết làm thế nào? Bác có thể giúp em giải quyết vấn đề này có được không?

Bạn có thể cụ thể hóa công việc bạn muốn là gì không? Nếu làm cái Combobox lấy Mã hàng, Tên hàng rồi thì sẽ làm gì với nó?
 
Bạn có thể cụ thể hóa công việc bạn muốn là gì không? Nếu làm cái Combobox lấy Mã hàng, Tên hàng rồi thì sẽ làm gì với nó?

Cám ơn bác đã lưu tâm đến vấn đề của em. Có nghĩa là dựa vào cột mã CV và Nội dung công việc (Cột S và T). Từ cột E em muốn tạo một Combobox, từ đó khi em nhập một mã CV bất kỳ theo mã CV ở cột S thì tại cột E và F nó sẽ tự dộng truy xuất cho em thông tin mã CV và nội dung CV từ cột S và T.
Bác cố gắng giúp em.
 
Em cũng đã đọc nhiều rồi nhưng do mấy cái này em chưa rành lắm nên vẫn đang loay hoay chưa biết làm thế nào? Bác có thể giúp em giải quyết vấn đề này có được không?

Vấn đề này dễ! Bạn chờ chút tôi tranh thủ làm cho bạn, tí nữa post file lên.
 
Thuật toán thì đại loại như vầy:

PHP:
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
    KeyCode = 0
    ActiveCell.Offset(1, 0).Select
  End If
End Sub
 
'------------------------------------------------------------------------------------------
 
Private Sub ComboBox1_Change()
  ActiveCell = ComboBox1
  ActiveCell.Offset(, 1) = ComboBox1.Column(1)
End Sub
 
'------------------------------------------------------------------------------------------
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With ComboBox1
    If Target.Column = 5 And Target.Row > 4 Then
      .Visible = True
      .Top = Target.Top: .Left = Target.Left
      .Width = Target.Width: .Height = Target.Height
    Else
      .Visible = False
    End If
  End With
End Sub

Tuy nhiên tôi cảm thấy nó như là Copy, Paste không được tại sheet đó, nên tôi đang nghĩ xem có cách nào khắc phục được không nên mất thời gian quá!

Nói thêm là File của bạn có hàng trăm cái name rác ẩn và hiện đấy nhé!
 
Lần chỉnh sửa cuối:
Rồi bạn ơi, thay code dưới đây:

PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  With ComboBox1
    If Target.Column = 5 And Target.Row > 4 Then
      .Visible = True
      .Top = Target.Top: .Left = Target.Left
      .Width = Target.Width: .Height = Target.Height
    Else
      .Visible = False
    End If
  End With
End Sub

Thành code sau:

PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim CB As Object
  If Not Intersect(Target, [E5:E2000]) Is Nothing Then
    ComboBox1.Visible = False
    If Target.Column = 5 Then
      Set CB = ComboBox1
      With CB
        .Visible = True
        .Height = Target.Height: .Width = Target.Width
        .Left = Target.Left: .Top = Target.Top
      End With
    End If
  End If
  Set CB = Nothing
End Sub
 
 
'===================================================
 
Private Sub ComboBox1_Change()
On Error Resume Next
  ActiveCell = ComboBox1
  ActiveCell.Offset(, 1) = ComboBox1.Column(1)
End Sub

Code này đảm bảo cho bạn Copy và Paste thoải mái! Tuy nhiên, cái combobox nó không bị ẩn sau khi thao tác, thôi thì chữa cháy bằng cách Format Cell không chọn Print Object là được rồi!

Mình tự sửa mình luôn, đôi khi thật ngớ ngẫn:

PHP:
Private Sub ComboBox1_Change()
On Error Resume Next
  ActiveCell = ComboBox1
  ActiveCell.Offset(, 1) = ComboBox1.Column(1)
  ComboBox1.Visible = False    '<--------- Thêm cái thằng này vào đây là OK con gà đen luôn:
End Sub
 

File đính kèm

  • BANG THEO DOI SAN LUONG PHAN XUONG MAY T9_2010(NEW).rar
    110.8 KB · Đọc: 238
Lần chỉnh sửa cuối:
Em xin sửa lại code một chút nhé!

PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 5And Target.Row > 4Then
    With ComboBox1
      .Visible = True
      .Top = Target.Top: .Left = Target.Left
      .Width = Target.Width: .Height = Target.Height
      .LinkedCell = Target.Address
    End With
  ElseIf Application.CutCopyMode = False Then
    ComboBox1.Visible = False
  End If
End Sub

Xem file đính kèm nhé!
 

File đính kèm

  • GPE.rar
    107.4 KB · Đọc: 190
Xin chân thành cám ơn bác Learning_Excel và bạn NH_DK rất nhiều. Nếu em muốn làm ở sheet khác thì làm tương tự hả các bác?
 
Đương nhiên rồi, bạn copy sheet thôi, sau đó vào sửa lại địa chỉ một số Range theo ý của bạn là OK.

Có một vấn đề em cần hỏi thêm. Khi em xóa cái mã ở cột mã CV nhưng phần nội dung CV thì lại không mất mà phải thêm một thao tác là Delete. Liệu có thể khắc phục được vấn đề này không bác? Em muốn khi xóa mã CV thì nội dung CV cũng biến luôn :;
 
ban huong dan cách chèn đoạn code đó vào excel 2010 luôn bạn ơi?
 
Web KT

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

Back
Top Bottom