Đây là control gì? Excel có nó không?

Liên hệ QC
Mình gởi file lên bạn xem giúp nhé cám ơn trước nhe

Mỗi bảng (mỗi file) mỗi kiểu sao mà copy cho bạn được? Bảng thì có tiêu đề, bảng lại không, bảng có tên thuốc, có giá, bảng lại không có tên thuốc lại có giá, bảng có STT, bảng lại không, ... mà mỗi loại thuốc không có mã thuốc hay sao?

Nếu không đồng nhất kết cấu bảng thì làm sao copy cho đầy đủ cho bạn được đây?

Tôi có một đề nghị:

1) Phải có tiêu đề cho mỗi file

2) Cấu trúc phải giống nhau

3) Tên sheet cần kết nối phải giống nhau

4) Chỉ cần tên gọi (tên thuốc), quy cách, giá gốc, các thứ còn lại tự form sẽ tính. Trong file của bạn công thức fill lê thê hình như đến 65 ngàn dòng luôn thì phải, đã vậy còn dùng màu nền định dạng cho hết các dòng, cột luôn thì dung lượng file quá lớn, tính toán rất ì ạch.
 
Lần chỉnh sửa cuối:


Mình cám ơn bạn nhiều nhiều..., bạn Hoàng Trọng Nghĩa ơi file KeyUp2_THU_NGHIEM_3 mình dùng thử đúng là quá tuyệt nhưng sao mình copy riêng file KeyUp2_THU_NGHIEM_3.xls của bạn vào thư mục chứa 4 file của mình và dù đã kiểm tra tiêu đề cột và tên sheet ở 4 file, khi bấm show form nó báo không kết nối mình không biết lổi của mình ở đâu nữa bạn xem giúp nhé, à rồi khi cần thay đổi % giá mình vào chổ nào để sửa vậy bạn ?. Mình nhờ bạn thêm một việc này, bạn có thể tạo bảng thông báo những mặt hàng sắp hết hạn sử dụng được không ? nội dung yêu cầu cụ thể mình có ghi gỏ trong file BLM ở sheet báo hạng sử dụng.
 

File đính kèm

Lần chỉnh sửa cuối:
Mình cám ơn bạn nhiều nhiều..., bạn Hoàng Trọng Nghĩa ơi file KeyUp2_THU_NGHIEM_3 mình dùng thử đúng là quá tuyệt nhưng sao mình copy riêng file KeyUp2_THU_NGHIEM_3.xls của bạn vào thư mục chứa 4 file của mình và dù đã kiểm tra tiêu đề cột và tên sheet ở 4 file, khi bấm show form nó báo không kết nối mình không biết lổi của mình ở đâu nữa bạn xem giúp nhé, à rồi khi cần thay đổi % giá mình vào chổ nào để sửa vậy bạn ?. Mình nhờ bạn thêm một việc này, bạn có thể tạo bảng thông báo những mặt hàng sắp hết hạn sử dụng được không ? nội dung yêu cầu cụ thể mình có ghi gỏ trong file BLM ở sheet báo hạng sử dụng.

Bạn kiểm tra đường dẫn, các đường dẫn của mỗi file như thế nào, ổ đĩa nào, thì bạn phải thay đổi ở các AppPath1 đến AppPath4.

Thay vì:

AppPath1 = ThisWorkbook.Path
AppPath2 = ThisWorkbook.Path & "\Level1"
AppPath3 = ThisWorkbook.Path & "\Level2"
AppPath4 = ThisWorkbook.Path & "\Level3"

Thì theo thực tế bạn có thể sửa lại:

AppPath1 = "D:\NGHIA\Nam 2012\Thang 11"
AppPath2 = "C:\Documents and Settings\Admin\Desktop\FileThu"
AppPath3 = "D:\Downloads\Documents"
AppPath4 = "F:\HOANG_TRONG_NGHIA"
 
Lần chỉnh sửa cuối:
Bạn kiểm tra đường dẫn, các đường dẫn của mỗi file như thế nào, ổ đĩa nào, thì bạn phải thay đổi ở các AppPath1 đến AppPath4.

Thay vì:

AppPath1 = ThisWorkbook.Path
AppPath2 = ThisWorkbook.Path & "\Level1"
AppPath3 = ThisWorkbook.Path & "\Level2"
AppPath4 = ThisWorkbook.Path & "\Level3"

Thì theo thực tế bạn có thể sửa lại:

AppPath1 = "D:\NGHIA\Nam 2012\Thang 11"
AppPath2 = "C:\Documents and Settings\Admin\Desktop\FileThu"
AppPath3 = "D:\Downloads\Documents"
AppPath4 = "F:\HOANG_TRONG_NGHIA"


Bạn chỉ dẫn rất chính xác mình làm được rồi, không có bạn mình như bị lạc giữa rừng âm ưu vậy, cám ơn bạn nhé. Khi cần thay đổi giá sỉ 4% 5% và giá lẻ thì mình vào đâu sửa vậy bạn ?
 
Lần chỉnh sửa cuối:
Bạn chỉ dẫn rất chính xác mình làm được rồi, không có bạn mình như bị lạc giữa rừng âm ưu vậy, cám ơn bạn nhé. Khi cần thay đổi giá sỉ 4% 5% và giá lẻ thì mình vào đâu sửa vậy bạn ?

Mã:
Private Sub ComboBox1_Change()
      On Error GoTo LOI
      Dim b As Byte, dongia As Long, Ham
      Set Ham = Application.WorksheetFunction
      With ComboBox1
            If isDrop = False Or Len(.Text) = 1 Then .DropDown
            [COLOR=#ff0000][B]dongia = .List(, 1)[/B][/COLOR]
[COLOR=#0000ff][B]            TextBox1 = dongia
            TextBox2 = Ham.Round(dongia [/B][/COLOR][COLOR=#ff0000][B]* 1.04[/B][/COLOR][COLOR=#0000ff][B], -2)
            TextBox3 = Ham.Round(dongia [/B][/COLOR][COLOR=#ff0000][B]* 1.05[/B][/COLOR][COLOR=#0000ff][B], -2)
            TextBox4 = Ham.Round(dongia [/B][/COLOR][COLOR=#ff0000][B]* 1.1[/B][/COLOR][COLOR=#0000ff][B], -2)[/B][/COLOR]
      End With
      isDrop = True
      Exit Sub
LOI:
      For b = 1 To 4
            Controls("TextBox" & b).Text = ""
      Next
End Sub


Đó, bạn tự biết mà sửa vào nhé!
 
Mã:
Private Sub ComboBox1_Change()
      On Error GoTo LOI
      Dim b As Byte, dongia As Long, Ham
      Set Ham = Application.WorksheetFunction
      With ComboBox1
            If isDrop = False Or Len(.Text) = 1 Then .DropDown
            [COLOR=#ff0000][B]dongia = .List(, 1)[/B][/COLOR]
[COLOR=#0000ff][B]            TextBox1 = dongia
            TextBox2 = Ham.Round(dongia [/B][/COLOR][COLOR=#ff0000][B]* 1.04[/B][/COLOR][COLOR=#0000ff][B], -2)
            TextBox3 = Ham.Round(dongia [/B][/COLOR][COLOR=#ff0000][B]* 1.05[/B][/COLOR][COLOR=#0000ff][B], -2)
            TextBox4 = Ham.Round(dongia [/B][/COLOR][COLOR=#ff0000][B]* 1.1[/B][/COLOR][COLOR=#0000ff][B], -2)[/B][/COLOR]
      End With
      isDrop = True
      Exit Sub
LOI:
      For b = 1 To 4
            Controls("TextBox" & b).Text = ""
      Next
End Sub


Đó, bạn tự biết mà sửa vào nhé!




Mình làm đươc rồi cám ơn bạn nhiều, à mình còn tạo đường dẫn để file KeyUp2_THU_NGHIEM_3 kết nối đến 4 file máy chủ đươc luôn, công nhận bạn giỏi thật mình khâm phục bạn sát đất luôn.
 
Mình làm đươc rồi cám ơn bạn nhiều, à mình còn tạo đường dẫn để file KeyUp2_THU_NGHIEM_3 kết nối đến 4 file máy chủ đươc luôn, công nhận bạn giỏi thật mình khâm phục bạn sát đất luôn.

Chẳng có gì phải "khâm phục sát đất" cả! Tất cả kiến thức tôi có được nhờ vào sự giúp đỡ, hướng dẫn của những thành viên trong diễn đàn này đấy. Bản thân mình chịu khó nghiên cứu, mày mò, chỉnh sửa ... thì sẽ có một ngày kiến thức từ "FALSE" sẽ dần dần trở thành "TRUE" mà thôi.
 
Bạn Hoàng Trọng Nghĩa mếm , Mình nhờ bạn tạo bảng thông báo những mặt hàng sắp hết hạn sử dụng bạn đã xem chưa ? giúp mình luôn nhé bạn.
 
chào anh xuanha e làm theo đoạn code của a nhung chi duoc so 1 den 10 thoi, a chi e doan code viết cho " chuỗi" đi a.
em cám ơn a
 
Sau khi thử nhiều cách để cho nó na ná giống cái AutoComplete Combo, tôi rút ra được rằng mình có thể làm trên combobox bình thường. Tuy nhiên, có 2 trường hợp:

Trường hợp 1, nếu dùng thuộc tính MatchEntry = fmMatchEntryComplete thì nó giống với cái "Web Search" hơn, tuy nhiên sẽ bị lỗi font nếu có dấu tiếng Việt (đây là 1 trong những lỗi khi gõ: không gõ được chữ LỮ nếu trước đó có chữ LƯU chẳng hạn). Nếu ta sử dụng cho nó, tốt nhất là dữ liệu không có dấu tiếng Việt.

Trường hợp 2, nếu dùng thuộc tính MatchEntry = fmMatchEntryNone, ta có thể sử dụng rộng rãi hơn, không cần phải tính toán SelLength, SelStart... và dễ dàng cho ta gõ vào tiếng Việt hơn.

Sau khi cân nhắc, tôi chọn trường hợp 2 là phương án tối ưu.

Các bạn xem file và bổ sung những gì thiếu sót cho mình nhé.

Chào anh Hoàng Trọng Nghĩa, tôi có xem qua vài mẩu combobox nhưng chỉ có mẩu của anh là phù hợp với yêu cầu sử dụng của tôi. Vậy xin anh giúp tôi:

1.Tạo 1 combobox như trong file mẩu của anh KeyUp2.rar ở trang # 10 lưu ý phải bấm nút Show Form màu xanh mới thấy combobox, đặt nó ở vị trí ô B2.

2.Khi gõ 1 hai ký tự đầu, nó sẽ lọc ra các cụm từ có 1 hai ký tự đó. Các cụm từ trong bài này chính là các họ tên.

3.Khi list combobox mở xuống, ta di chuyễn dòng chọn màu xanh đến họ tên cần chọn,trong bài này tôi ví dụ chọn tên Nguyễn Hoài Thanh, yêu cầu lúc này là tạo lệnh sao cho khi bấm tiếp phím enter là khung chọn ô của bảng tính nhãy đúng ngay vị trí ô chứa cái tên Nguyễn Hoài Thanh trong cột HỌ TÊN.

Tôi có gửi file lên minh họa yêu cầu, anh xem và giúp tôi nhé. Tôi xin cám ơn anh nhiều.
 

File đính kèm

Lần chỉnh sửa cuối:
Chào anh Hoàng Trọng Nghĩa, tôi có xem qua vài mẩu combobox nhưng chỉ có mẩu của anh là phù hợp với yêu cầu sử dụng của tôi. Vậy xin anh giúp tôi:

1.Tạo 1 combobox như trong file mẩu của anh KeyUp2.rar ở trang # 10 lưu ý phải bấm nút Show Form màu xanh mới thấy combobox, đặt nó ở vị trí ô B2.

2.Khi gõ 1 hai ký tự đầu, nó sẽ lọc ra các cụm từ có 1 hai ký tự đó. Các cụm từ trong bài này chính là các họ tên.

3.Khi list combobox mở xuống, ta di chuyễn dòng chọn màu xanh đến họ tên cần chọn,trong bài này tôi ví dụ chọn tên Nguyễn Hoài Thanh, yêu cầu lúc này là tạo lệnh sao cho khi bấm tiếp phím enter là khung chọn ô của bảng tính nhãy đúng ngay vị trí ô chứa cái tên Nguyễn Hoài Thanh trong cột HỌ TÊN.

Tôi có gửi file lên minh họa yêu cầu, anh xem và giúp tôi nhé. Tôi xin cám ơn anh nhiều.

Để tôi nói ngắn gọn yêu cầu của bạn xem có đúng không nhé.

1) Đặt 1 ComboBox (ActiveX Controls) vào trong sheet.

2) Viết các thủ tục để lọc tên cần tìm.

3) Khi chọn vào một tên nào đó, thì tại ô chứa tên sẽ được chọn vào.


Nếu đúng như trên, các yêu cầu của bạn đều có thể đáp ứng, tuy nhiên, trong một danh sách tên thì sẽ có tên họ trùng nhau, vậy cho nên khó có thể xác định chính xác là tên nào; đây cũng chính là điều tôi cho là khó cho bạn.
 
Để tôi nói ngắn gọn yêu cầu của bạn xem có đúng không nhé.

1) Đặt 1 ComboBox (ActiveX Controls) vào trong sheet.

2) Viết các thủ tục để lọc tên cần tìm.

3) Khi chọn vào một tên nào đó, thì tại ô chứa tên sẽ được chọn vào.


Nếu đúng như trên, các yêu cầu của bạn đều có thể đáp ứng, tuy nhiên, trong một danh sách tên thì sẽ có tên họ trùng nhau, vậy cho nên khó có thể xác định chính xác là tên nào; đây cũng chính là điều tôi cho là khó cho bạn.

Chào anh Hoàng Trọng Nghĩa, vâng anh tóm tắt yêu cầu trên là đúng rồi ạ, việc tên họ trùng nhau không sao đâu anh tôi sẻ chú thích cho đừng trùng nhau. Cám ơn anh nhiều nhé.
 
Chào anh Hoàng Trọng Nghĩa, vâng anh tóm tắt yêu cầu trên là đúng rồi ạ, việc tên họ trùng nhau không sao đâu anh tôi sẻ chú thích cho đừng trùng nhau. Cám ơn anh nhiều nhé.

Tôi đã làm theo yêu cầu của bạn như sau:

- Bấm nút lệnh màu xanh để hiện ComboBox tìm kiếm

- Gõ tên cần tìm, rồi chọn tên trong danh sách

- Enter để tìm vị trí tên.

Với các thủ tục sau:

Thủ tục hiện ComboBox:

Mã:
Sub HienComboBox()
      
      Dim posCell As Range
      ActiveWindow.ScrollRow = 3

      With Sheet1
      
            Set posCell = .[B2]
            sArray = Range(.[B3], .[B65536].End(xlUp)).Value
            
            With .ComboBox1
                  .Top = posCell.Top
                  .Left = posCell.Left
                  .Height = posCell.Height
                  .Width = posCell.Width
                  .Visible = True
                  .List = sArray
                  .Text = ""
                  .Activate
            End With
            
      End With
      
End Sub

Thủ tục gõ vào ComboBox để lọc tên, lọc xong chỉ việc Enter:

Mã:
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
      On Error GoTo Loi
      
      With ComboBox1
      
            Select Case KeyCode
                  Case 8
                        If .Text = "" Then
                              .List = sArray: Exit Sub
                        End If
                  Case 13
                        If .MatchFound = True Then
                              Range(Sheet1.[B3], Sheet1.[B65536].End(xlUp)) _
                                    .Find(.Text, LookIn:=xlValues, LookAt:=xlWhole).Select
                                    .Visible = False
                              Exit Sub
                        End If
                  Case 37 To 40: Exit Sub
            End Select
            
            If .Text = "" Then GoTo Loi
                  .List = Filter2DArray(sArray, 1, "*" & .Text & "*", False)
            Exit Sub
Loi:
            .List = Array("")
            .Clear
            
      End With
      
End Sub

Toàn bộ code chỉ là vậy, thế nhưng bạn có hỏi tại sao gõ chữ Thanh mà không hiện lên các chữ liên quan có dấu, xin thưa với bạn là ở đây lọc xác định, nếu bạn muốn lọc tên có dấu thì bạn thêm dấu vào khi gõ!
 

File đính kèm

Anh Hoàng Trọng Nghĩa file anh làm vừa gọn đẹp và rất hay, cám ơn anh lắm nhe.

Anh cho tôi hỏi thêm nếu tôi có thêm 1 file danh_sach2 có định dạng thứ tự cột, có nhu cầu tìm tên hoàn toàn giống như file của anh làm, vậy ta có thể biến combobox anh vừa làm thành công cụ dùng chung cho cả 2 file được không anh ? làm được như thế ta không cần tạo thêm combobox cho file danh_sach2.
 
Anh Hoàng Trọng Nghĩa file anh làm vừa gọn đẹp và rất hay, cám ơn anh lắm nhe.

Anh cho tôi hỏi thêm nếu tôi có thêm 1 file danh_sach2 có định dạng thứ tự cột, có nhu cầu tìm tên hoàn toàn giống như file của anh làm, vậy ta có thể biến combobox anh vừa làm thành công cụ dùng chung cho cả 2 file được không anh ? làm được như thế ta không cần tạo thêm combobox cho file danh_sach2.


Hè hè, bạn này được voi đòi "2 bà Trưng" hen! Tôi có một đề nghị, sao bạn không tìm tên với công cụ có sẳn FIND hả bạn? Chỉ cần Ctrl+F và gõ vào Find What cụm từ cần tìm rồi Find Next thôi!
 
Hè hè, bạn này được voi đòi "2 bà Trưng" hen! Tôi có một đề nghị, sao bạn không tìm tên với công cụ có sẳn FIND hả bạn? Chỉ cần Ctrl+F và gõ vào Find What cụm từ cần tìm rồi Find Next thôi!
Chà chà , anh Trọng Nghĩa không những giỏi mà còn vui tính nữa. Voi thì muốn chứ “ 2 bà Trưng ” thì hỏng dám đâu, phục vụ không xong có nước mà… chết anh ạ. Công cụ có sẳn FIND tuy tiện lợi nhưng khi danh sách tên dài và tên gần giống nhau thì bấm Find Next rất là mỏi tay, nhìn danh sách muốn lồi mắt luôn, gõ sai kí tự nó tìm không ra.
 
Chà chà , anh Trọng Nghĩa không những giỏi mà còn vui tính nữa. Voi thì muốn chứ “ 2 bà Trưng ” thì hỏng dám đâu, phục vụ không xong có nước mà… chết anh ạ. Công cụ có sẳn FIND tuy tiện lợi nhưng khi danh sách tên dài và tên gần giống nhau thì bấm Find Next rất là mỏi tay, nhìn danh sách muốn lồi mắt luôn, gõ sai kí tự nó tìm không ra.

Vậy bạn có biết xài Addins không? Tôi lại có một đề nghị, không cần đặt cái combobox ở trong sheet, chỉ cần sau khi cài Addins vào thư mục Addins, rồi trong option check vào nó, thì lúc sử dụng bạn chỉ cần bấm phím tắt để chon hiện một form lên, cần tra từ nào thì tra rồi enter nó sẽ tìm đúng với mục đó. Bạn thấy như thế nào?
 
Vậy bạn có biết xài Addins không? Tôi lại có một đề nghị, không cần đặt cái combobox ở trong sheet, chỉ cần sau khi cài Addins vào thư mục Addins, rồi trong option check vào nó, thì lúc sử dụng bạn chỉ cần bấm phím tắt để chon hiện một form lên, cần tra từ nào thì tra rồi enter nó sẽ tìm đúng với mục đó. Bạn thấy như thế nào?

Addins tôi chưa xài, Anh mô tả công dụng thấy hợp lý, Anh hướng dẫn cho tôi nhé. Tôi đang xài Excel 2003.
 
Lần chỉnh sửa cuối:
Addins tôi chưa xài, Anh mô tả công dụng thấy hợp lý, Anh hướng dẫn cho tôi nhé.

Trước tiên hết tôi hướng dẫn bạn cách sử dụng file Addins:

Chép file FileAddIns.xla vào đường dẫn dưới đây:

(Với "\TRONGNGHIA\" là tên của máy tính người dùng)

Với Excel 2003:

C:\Document and Setting\TRONGNGHIA\Application Data\Microsoft\AddIns\

Trên thanh Menu, chọn Tool, chọn tiếp Add-Ins, tại đây check vào tên file "FileAddIns".

Với Excel 2007 trở về sau:

C:\Users\TRONGNGHIA\AppData\Roaming\Microsoft\AddIns\

Bấm vào nút trên cùng bên trái của dãy Ribbon, Chọn Excel Options, bấm vào nút Add-Ins, phía dưới cùng của hộp thoại này, chọn vào nút Go... và cuối cùng là check vào tên file "FileAddIns".


Chút nữa làm xong file tôi sẽ gửi lên sau và hướng dẫn sử dụng file AddIn tôi sắp gửi cho bạn.
 
Web KT

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

Back
Top Bottom