Giúp em hiện form tìm tên thuốc theo từ gợi ý trên các cell (1 người xem)

Liên hệ QC

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

quoc nhat

Thành viên tiêu biểu
Tham gia
8/3/12
Bài viết
567
Được thích
43
Nghề nghiệp
cán bộ ngành y tế
Em có File Excel dùng để quản lý việc khám chữa bệnh và xuất thuốc cho bệnh nhân có thẻ BHYT ( có xóa các sheet không liên quan để giảm dung lượng)
Chả là ở trạm y tế em đang làm có nhiều loại thuốc và đã đặt mã cho từng loại thuốc đó nên khó cho người đánh máy nhớ hết các mã thuốc của từng loại thuốc. Để viết đúng tên thuốc( mã thuốc) em có sử dụng Form và code của anh Hoàng trọng nghĩa để tìm đúng các tên thuốc muốn tìm theo từ gợi ý, nhưng không biết áp dụng code cho sự kiện Worksheet_Change() như thế nào. Nên đưa lên đây để tìm sự sự giúp đỡ của các anh chị.
Yêu cầu em có ghi trên Sheet
các anh chị giúp em với
Em cảm ơn nhiều!
 

File đính kèm

Lần chỉnh sửa cuối:
Chào bạn quoc nhat, mình cũng đang quan tâm đến ý tưởng này đây. Cũng sắp hoàn thành thuy nhiên mình dùng scdl SQL và lập đơn thuốc và khai thác nó trên Excel. Mình ở Vĩnh Linh, nếu cần liên hệ.
 
Upvote 0
Để viết đúng tên thuốc( mã thuốc) em có sử dụng Form và code của anh Hoàng trọng nghĩa để tìm đúng các tên thuốc muốn tìm theo từ gợi ý, nhưng không biết áp dụng code cho sự kiện Worksheet_Change() như thế nào.

Mình nghĩ Worksheet_Change() ko hợp lý bằng sự kiện Worksheet_BeforeDoubleClick tại range("B63:B68") -> show form tìm kiếm.
Sau khi tìm xong, chọn giá trị trên Listbox nó gắn giá trị mã vào Activecell và tự động tiếp tục chọn cell kế tiếp để Search tên thuốc thứ 2, 3, 4 ... (lúc này form đang mở).
 
Upvote 0
Chào bạn quoc nhat, mình cũng đang quan tâm đến ý tưởng này đây. Cũng sắp hoàn thành thuy nhiên mình dùng scdl SQL và lập đơn thuốc và khai thác nó trên Excel. Mình ở Vĩnh Linh, nếu cần liên hệ.
chào bạn thaytu
đơn vị mình nằm bên kia cầu Hiền Lương bạn có thể cho mình xin số điện thoại được không?
 
Upvote 0
Mình nghĩ Worksheet_Change() ko hợp lý bằng sự kiện Worksheet_BeforeDoubleClick tại range("B63:B68") -> show form tìm kiếm.
Sau khi tìm xong, chọn giá trị trên Listbox nó gắn giá trị mã vào Activecell và tự động tiếp tục chọn cell kế tiếp để Search tên thuốc thứ 2, 3, 4 ... (lúc này form đang mở).
anh viết giúp đoạn code trên với
 
Upvote 0
Em có File Excel dùng để quản lý việc khám chữa bệnh và xuất thuốc cho bệnh nhân có thẻ BHYT ( có xóa các sheet không liên quan để giảm dung lượng)
Chả là ở trạm y tế em đang làm có nhiều loại thuốc và đã đặt mã cho từng loại thuốc đó nên khó cho người đánh máy nhớ hết các mã thuốc của từng loại thuốc. Để viết đúng tên thuốc( mã thuốc) em có sử dụng Form và code của anh Hoàng trọng nghĩa để tìm đúng các tên thuốc muốn tìm theo từ gợi ý, nhưng không biết áp dụng code cho sự kiện Worksheet_Change() như thế nào. Nên đưa lên đây để tìm sự sự giúp đỡ của các anh chị.
Yêu cầu em có ghi trên Sheet
các anh chị giúp em với
Em cảm ơn nhiều!
Tham khảo cách sau xem (code cùi lắm, dùng được thì dùng, không được thì chờ vậy)
Thêm đoạn này vào Sheet1 (dùng sự kiện Worksheet_SelectionChange):
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
    On Error Resume Next
    If Not Intersect(Target, [B63:B68]) Is Nothing Then
        UserForm14.Show
    End If
Application.ScreenUpdating = True
End Sub
Code trong UserForm14 (đưa luôn 2 code sau vào)
Bấm nút Chọn:
Mã:
Private Sub CommandButton1_Click()
If lstDanhMuc <> "" Then
    ActiveCell = Me.lstDanhMuc.Column(0)
    ActiveCell.Offset(, 2) = Me.lstDanhMuc.Column(1)
    ActiveCell.Offset(, 6) = Me.lstDanhMuc.Column(2)
    Unload Me
Else
    MsgBox "CHUA CHON MAVT"
End If
End Sub
Hoặc DoubleClick vào Mã VT đã chọn:
Mã:
Private Sub lstDanhMuc_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveCell = Me.lstDanhMuc.Column(0)
    ActiveCell.Offset(, 2) = Me.lstDanhMuc.Column(1)
    ActiveCell.Offset(, 6) = Me.lstDanhMuc.Column(2)
    Unload Me
End Sub
 

File đính kèm

Upvote 0
anh viết giúp đoạn code trên với

tại Sheet1

Mã:
Private Sub [B]Worksheet_BeforeDoubleClick[/B](ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, [B63:B68]) Is Nothing Then
        UserForm14.Show
        Cancel = True
    End If
End Sub

để ý: ko có sự kiện WS_change kèm theo.


Trên form UserForm14:

Mã:
Private Sub [B]CommandButton1_Click[/B]()
    ActiveCell.Value = Me.lstDanhMuc.Value
    ActiveCell.Offset(1, 0).Select
End Sub
 
Upvote 0
Tham khảo cách sau xem (code cùi lắm, dùng được thì dùng, không được thì chờ vậy)
Thêm đoạn này vào Sheet1 (dùng sự kiện Worksheet_SelectionChange):
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
    On Error Resume Next
    If Not Intersect(Target, [B63:B68]) Is Nothing Then
        UserForm14.Show
    End If
Application.ScreenUpdating = True
End Sub
Code trong UserForm14 (đưa luôn 2 code sau vào)
Bấm nút Chọn:
Mã:
Private Sub CommandButton1_Click()
If lstDanhMuc <> "" Then
    ActiveCell = Me.lstDanhMuc.Column(0)
    ActiveCell.Offset(, 2) = Me.lstDanhMuc.Column(1)
    ActiveCell.Offset(, 6) = Me.lstDanhMuc.Column(2)
    Unload Me
Else
    MsgBox "CHUA CHON MAVT"
End If
End Sub
Hoặc DoubleClick vào Mã VT đã chọn:
Mã:
Private Sub lstDanhMuc_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveCell = Me.lstDanhMuc.Column(0)
    ActiveCell.Offset(, 2) = Me.lstDanhMuc.Column(1)
    ActiveCell.Offset(, 6) = Me.lstDanhMuc.Column(2)
    Unload Me
End Sub
Cảm ơn anh đã giúp em
Anh ơi cho em hỏi thêm là mình muốn khi chọn được mã thuốc rồi (thoát form) thì nó tự động select đến cell số lượng tương ứng vừa chọn được không?
 
Upvote 0
Cảm ơn anh đã giúp em
Anh ơi cho em hỏi thêm là mình muốn khi chọn được mã thuốc rồi (thoát form) thì nó tự động select đến cell số lượng tương ứng vừa chọn được không?
Thêm dòng màu đỏ:
Mã:
    ActiveCell.Offset(, 2) = Me.lstDanhMuc.Column(1)
    ActiveCell.Offset(, 6) = Me.lstDanhMuc.Column(2)
[COLOR=#ff0000]    ActiveCell.Offset(, 7).Select[/COLOR]
    Unload Me
 
Upvote 0
Thêm dòng màu đỏ:
Mã:
    ActiveCell.Offset(, 2) = Me.lstDanhMuc.Column(1)
    ActiveCell.Offset(, 6) = Me.lstDanhMuc.Column(2)
[COLOR=#ff0000]    ActiveCell.Offset(, 7).Select[/COLOR]
    Unload Me
Em đã làm theo cách của anh và đã được như ý
Nhưng cho em hỏi thêm là mình muốn hiện form khi select qua I63:I68 và textbox sẽ lấy dữ liệu từ B63:B68
thì mình sửa code lại như thế nào hả anh
Mong anh thông cảm và chỉ giúp em với
Em cảm ơn
 
Upvote 0

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

Back
Top Bottom