tìm kiệm bằng phím lên xuống trong Form và nhấn Enter gán dữ liệu vào Sheet (1 người xem)

Liên hệ QC

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

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
965
Được thích
175
Giới tính
Nữ
Chào các AC!
Em có file này nhờ Các AC giúp :
Khi click vào cột C và D của Sheet "Nhap" và "Xuat" thì xuất hiện Form.
Dùng phím lên, xuống chọn mặt hang trong Form rồi nhân Enter thì gán dữ lieu vào Sheet, và nếu chọn tiếp thì nhấn enter sẽ gán dữ lieu vào Row kế tiếp (giống như File "Tạo ứng dung Form Tìm Kiếm và Nhập Liệu"- của Thầy Ndu), nhưng trong file Thầy Ndu là DoubleClick.
Nếu Thầy Ndu có ghé qua cũng mong Thầy giúp em.
Em Cám ơn các AC.
ps: Code trong Form và Module2 là của Thầy Ndu, Code tính "Ton"(Module1) là của Thầy Ba Tê.
 

File đính kèm

Lần chỉnh sửa cuối:
Tìm và lọc dữ liệu trong một danh sách chọn

Nếu bạn nào không muốn lập trình VBA, hoặc muốn giải pháp tìm kiếm, lọc để nhập liệu vào sheet tối ưu nhất (linh hoạt, tốc độ, đa năng) thì dùng Add-in A-Tools, chỉ vài thao tác thiết lập dữ liệu nguồn và vùng nhập liệu như video hướng dẫn dưới đây mọi thứ trở nên tuyệt vời mà đơn giản!
[video=youtube;mAXiZbhEfr4]https://www.youtube.com/watch?v=mAXiZbhEfr4[/video]​
 
Upvote 0
Chào các AC!
Em có file này nhờ Các AC giúp :
Khi click vào cột C và D của Sheet "Nhap" và "Xuat" thì xuất hiện Form.
Dùng phím lên, xuống chọn mặt hang trong Form rồi nhân Enter thì gán dữ lieu vào Sheet, và nếu chọn tiếp thì nhấn enter sẽ gán dữ lieu vào Row kế tiếp (giống như File "Tạo ứng dung Form Tìm Kiếm và Nhập Liệu"- của Thầy Ndu), nhưng trong file Thầy Ndu là DoubleClick.
Nếu Thầy Ndu có ghé qua cũng mong Thầy giúp em.
Em Cám ơn các AC.
ps: Code trong Form và Module2 là của Thầy Ndu, Code tính "Ton"(Module1) là của Thầy Ba Tê.

Cái này phải dùng 1 sheet form để làm phiếu nhấp, phiếu xuất (chứ không đơn thuần như bạn nghĩ đâu).

- Dùng phiếu nhấp để nhập liệu vào sheet Nhap.

- Dùng phiếu xuất để nhập liệu vào sheet Xuat.
 
Upvote 0
Em cám ơn Thầy Tuân và Anh Be09, em chỉ cần viết code sao cho chọn bằng bàn phím và enter thì gán vào sheet(như If Keycode=13 then ListBox.ListIndex ......)
Giống file Thầy Ndu nhưng là sự kiện Enter.
 
Upvote 0
Em cám ơn Thầy Tuân và Anh Be09, em chỉ cần viết code sao cho chọn bằng bàn phím và enter thì gán vào sheet(như If Keycode=13 then ListBox.ListIndex ......)
Giống file Thầy Ndu nhưng là sự kiện Enter.
tạo cho bạn sheet nhập
bấm đúp cột C hiện List, Enter gán vào range, bấm đúp gán vào range và thoát List
 

File đính kèm

Upvote 0
Một lần nữa em cám Ơn Anh Hiếu nhiều nhiều.
Anh đã giúp em rất nhiều!
 
Upvote 0
tạo cho bạn sheet nhập
bấm đúp cột C hiện List, Enter gán vào range, bấm đúp gán vào range và thoát List

Nếu mở form, người ta nhấn Enter liền mà không chọn bất cứ dòng nào trong listbox thì sao?
Nói chung lập trình thì phải quan tâm đến bẫy lỗi nhiều 1 chút. Mấy thứ thấy dễ ăn có khi vẫn rất khó nhai (nếu không biết cách)
 
Upvote 0
Nếu mở form, người ta nhấn Enter liền mà không chọn bất cứ dòng nào trong listbox thì sao?
Nói chung lập trình thì phải quan tâm đến bẫy lỗi nhiều 1 chút. Mấy thứ thấy dễ ăn có khi vẫn rất khó nhai (nếu không biết cách)
cám ơn bạn, mình chưa tính đến trường hợp đó, cũng đã thử Enter và bấm lung tung, nhưng chưa thấy lổi
 
Upvote 0
cám ơn bạn, mình chưa tính đến trường hợp đó, cũng đã thử Enter và bấm lung tung, nhưng chưa thấy lổi

Tức là thế này: Khi form mở lên nhưng ta chưa chọn bất cứ dòng nào trong listbox thì sẽ có chuyện. Điều đương nhiên thôi, bởi theo bạn thì khi ấy code sẽ lấy dòng nào trong listBox? (có xác định được index là dòng nào đâu mà lấy, bởi khi listbox vừa hiện ra mà ta chưa chọn dòng nào thì chắc chắn ListBox.ListIndex phải = -1)
Nếu bạn kiểm tra rồi mà vẫn chưa phát hiện lỗi thì.. thôi, bạn may mắn vậy!
 
Lần chỉnh sửa cuối:
Upvote 0
cám ơn bạn, mình chưa tính đến trường hợp đó, cũng đã thử Enter và bấm lung tung, nhưng chưa thấy lổi

Theo ý anh Tuấn nêu thì chắc chắn lỗi đó anh.
Nếu mở form, người ta nhấn Enter liền mà không chọn bất cứ dòng nào trong listbox thì sao?
Em thử vầy thì không bị nữa:
Mã:
  With ListBox1
    .ColumnCount = 2: .ColumnWidths = "190;40": .List = Arr
    .Selected(0) = True      'Thêm dòng này
  End With
 
Upvote 0
Theo tôi thì cái này nên thực hiện như sau:

1/ Dùng 1 sheet chứa danh mục hàng hóa gồm: hàng hóa, đơn vị tính, đơn giá để đưa dữ liệu vào ListBox, nếu sheet trống chưa có hàng hóa nào thì lấy cái gì để chọn và nhập liệu.

2/ Nếu sử dụng UserForm thì nên có 1 TextBox tìm chủng loại để Load lên Form để còn bổ sung thêm nội dung khác như: Tên nhà cung cấp, số điện thoại, địa chỉ.....thành tiền.

3/ Nhưng theo tôi thì nên sử dụng Sheet Form để làm phiếu nhập, phiếu xuất thì sẽ thuận tiện hơn.
 
Upvote 0
Theo ý anh Tuấn nêu thì chắc chắn lỗi đó anh.

Em thử vầy thì không bị nữa:
Mã:
  With ListBox1
    .ColumnCount = 2: .ColumnWidths = "190;40": .List = Arr
    .Selected(0) = True      'Thêm dòng này
  End With

Cảm ơn anh đã hiểu được vấn đề
Hoặc có thể dùng IF theo kiểu If Me.ListBox1.ListIndex >-1 then cũng được
--------------------------------------------
2/ Nếu sử dụng UserForm thì nên có 1 TextBox tìm chủng loại để Load lên Form để còn bổ sung thêm nội dung khác như: Tên nhà cung cấp, số điện thoại, địa chỉ.....thành tiền.
Thôi anh! Người ta không "đòi", tự dưng anh thêm việc chi cho cực thân vậy? --=0
 
Upvote 0
Anh be09 thì có bao giờ rảnh, anh chỉ hứa với khuyên nhủ thôi.
 
Upvote 0
Anh be09 thì có bao giờ rảnh, anh chỉ hứa với khuyên nhủ thôi.

Chỉ có những thành viên thường uống Coffee với anh thì mới biết được anh có rảnh hay không?????

Nhưng ngặc nổi Cơ quan toàn con ông cháu cha cả, cái nào khó khăn, phức tạp thì nó giao mình làm, kể cả những công việc theo dõi nhiều năm những người đó theo dõi, khi tổng hợp dữ liệu và làm báo cáo thì lại giao cho mình làm (có nhiều khi nó ngược đời vậy đó), nhập dữ liệu theo dõi thì tùm lum, tòe loe, khi làm nếu cái nào không có thông tin thì ứng biến (bùa phép) cho xong báo cáo (vậy đó).

Anh mới vừa tổng hợp và làm xong 2 cái báo cáo (1 cái tổng kết 3 năm và 1 cái tổng kết 5 năm) hôm nay mới rảnh rổi mà vào diễn đàn tám cho qua chuyện, chứ thời gian qua anh ngía sơ qua diễn đàn cho vui rồi tắt máy, chứ có giúp được ai đâu.

Để biết thêm, vì sao có chuyện ngược đời như vậy, mời bạn đọc bài này "Chưa thi công chức nhưng 4 năm đã lên trưởng phòng":

http://antt.vn/quan-lo-than-toc-cua-nu-truong-phong-so-xay-dung-thanh-hoa-0124260.html

http://tuoitre.vn/tin/chinh-tri-xa-...uong-phong-so-xay-dung-thanh-hoa/1276655.html

Xã hội mình hiện nay nó vậy đó (rỏ chán).
 
Lần chỉnh sửa cuối:
Upvote 0
Tức là thế này: Khi form mở lên nhưng ta chưa chọn bất cứ dòng nào trong listbox thì sẽ có chuyện. Điều đương nhiên thôi, bởi theo bạn thì khi ấy code sẽ lấy dòng nào trong listBox? (có xác định được index là dòng nào đâu mà lấy, bởi khi listbox vừa hiện ra mà ta chưa chọn dòng nào thì chắc chắn ListBox.ListIndex phải = -1)
Nếu bạn kiểm tra rồi mà vẫn chưa phát hiện lỗi thì.. thôi, bạn may mắn vậy!
phát hiện lỗi rồi , lý do con chuột trung quốc của mình có tính năng tự động đặc biệt, bấm đúp chuột tự bấm thêm nên chọn luôn trong List, chắc phải thay mới !$@!!
Theo ý anh Tuấn nêu thì chắc chắn lỗi đó anh.
Em thử vầy thì không bị nữa:
Mã:
  With ListBox1
    .ColumnCount = 2: .ColumnWidths = "190;40": .List = Arr
    .Selected(0) = True      'Thêm dòng này
  End With
hoặc như vầy vẫn được
Mã:
Private Sub UserForm_Initialize()
...
  With ListBox1
    .ColumnCount = 2: .ColumnWidths = "190;40": .List = Arr
    .ListIndex = 0
  End With
End Sub
cám ơn các bạn, chúc buổi sáng vui }}}}}}}}}}}}}}}
 
Upvote 0
Sao em làm cho Sheet Xuat thì thấy List Của ListBox lại ít hàng hóa hơn bên Sheet Nhap.
Ví dụ như khi Form hiện bên sheet Nhap thì có tới 16 loại hàng hóa, còn khi form hiện bên sheet Xuat thì chỉ có 13 loại hàng hóa.
Ý em là lấy hết các loại hàng hóa có bên sheet Nhap để xuất loại nào thì chọn.
 
Upvote 0
Sao em làm cho Sheet Xuat thì thấy List Của ListBox lại ít hàng hóa hơn bên Sheet Nhap.
Ví dụ như khi Form hiện bên sheet Nhap thì có tới 16 loại hàng hóa, còn khi form hiện bên sheet Xuat thì chỉ có 13 loại hàng hóa.
Ý em là lấy hết các loại hàng hóa có bên sheet Nhap để xuất loại nào thì chọn.
bạn chỉnh lại code
Mã:
Private Sub UserForm_Initialize()
  Dim sList As Object, Darr(), Arr(), sItem As Variant, i As Long, K As Long, R As Long, SortKey As String
  Set sList = CreateObject("System.Collections.ArrayList")
[COLOR=#ff0000]  With Sheets("Nhap")[/COLOR]
[COLOR=#ff0000]    Darr = .Range("C2:D" & .Range("C" & Rows.Count).End(xlUp).Row).Value[/COLOR]
[COLOR=#ff0000]  End With[/COLOR]
  With CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(Darr)
      SortKey = Darr(i, 1) & "#" & Darr(i, 2)
      If Not .Exists(SortKey) Then
          .Add SortKey, Array(Darr(i, 1), Darr(i, 2))
          sList.Add SortKey
      End If
    Next i
    sList.Sort
    R = sList.Count
    ReDim Arr(1 To R, 1 To 2)
    For i = 1 To R
      SortKey = sList(i - 1)
      sItem = .Item(SortKey)
      Arr(i, 1) = sItem(0): Arr(i, 2) = sItem(1)
    Next i
  End With
  Set sList = Nothing
  With ListBox1
    .ColumnCount = 2: .ColumnWidths = "190;40": .List = Arr
[COLOR=#ff0000]    .ListIndex = 0[/COLOR]
  End With
End Sub
 
Upvote 0
Anh Hieu cho em hỏi tí, sao trong sự kiện DoubleClick trong Listbox thì con trỏ nhảy tới cột E để nhập số lượng còn trong sự kiện Enter thì không được.
Mong Anh có thể giúp going như DoubleClick
 
Lần chỉnh sửa cuối:
Upvote 0
Anh Hieu cho em hỏi tí, sao trong sự kiện DoubleClick trong Listbox thì con trỏ nhảy tới cột E để nhập số lượng còn trong sự kiện Enter thì không được.
Mong Anh có thể giúp going như DoubleClick
khi bạn enter, bạn không thể nhập liệu được vì listbox dang hoạt động, chỉ chỉ khi nào bạn đóng list box mới nhập liệu được
 
Upvote 0
Web KT

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

Back
Top Bottom