Các anh chị xem dùm em chương trình này nhé!

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

thomong

Thành viên chính thức
Tham gia
31/8/07
Bài viết
55
Được thích
33
Nghề nghiệp
văn phòng
em viết dựa vào chương trình của anh Thanh Phong gởi cho, nhưng do kiến thức excel còn yếu quá nên không sửa được, không hiệu chỉnh được command button, anh chị nào biết giúp em với nha.
 

File đính kèm

Fỏm ban bi lỗi chõ nào, sao bạn không ghi ra, nhưng tôi thấy trong code của fo rm không có Name này :"MaxRowData1" mà chỉ có "MaxRowData" thôi!
 
Upvote 0
em viết code cho nút save,Delete của frm_nhanvien chưa được, command ở ngoài worksheet em không biết hiệu chỉnh. mong các anh chị xem lại giúp nha.
 
Upvote 0
em kiểm tra code trong form nhưng em đã khai báo :"MaxRowData1" trong PublicConts rùi mà. vì em chỉ biết bấy nhiêu thui.
 
Upvote 0
em kiểm tra code trong form nhưng em đã khai báo :"MaxRowData1" trong PublicConts rùi mà. vì em chỉ biết bấy nhiêu thui.

Lỗi cơ bản đấy bạn,
Vì các biến bạn khai ở module tuy là biến public. Nhưng khi gán giá trị cho public bằng thủ tục khi workbook activate là không chính xác:

Mã:
Không chuẩn chỗ này:

Private Sub Workbook_Activate()
MaxRowData = Range("MaxRowData").Value
MaxRowData1 = Range("MaxRowData1").Value
MaxRowData2 = Range("MaxRowData2").Value
End Sub

Bạn nên làm như sau:

Trong module viết một thủ tục:
PHP:
Sub WSActivate()
MaxRowData = Range("MaxRowData").Value
MaxRowData1 = Range("MaxRowData1").Value
MaxRowData2 = Range("MaxRowData2").Value
End sub

Sau đó vào thisworkbook gõ vào:
PHP:
Private Sub Workbook_Activate()
Application.Run "WSActivate"
End Sub


Lỗi tương tự với nút lệnh trên form của bạn.
Bạn nên xây dựng thủ tục trong module rối khi click nút thì gọi thủ tục đó chạy.
PHP:
Private Sub cmdsave_Click()
If Me.txtMaNV <> "" Then
MaxRowData1 = Range("MaxRowData1").Value   ==> không khai báo chính xác chỗ này, không thể khai báo giá trị một range ở sheet khác. Thủ tục này phải làm ở module.
Sheets("Setup").Select
Cells(MaxRowData1, 1) = Me.txtMaNV.Value
Cells(MaxRowData1, 2) = Me.txtTenNV.Value
Cells(MaxRowData1, 3) = Me.txtPhongBan.Value

Else
a = MsgBox("Du lieu nhap chua day du, vui long xem lai cach nhap lieu", vbOKOnly, "Thong bao")
Me.txtMaNV.SetFocus
Exit Sub

End If

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bác Ca_dafi ơi! em làm thử rùi nhưng không được, vì em không có học về phần viết code này nên còn vướng nhiều quá.
MaxRowData1 = Range("MaxRowData1").Value ==> có phải em bỏ dòng này, vì đã viết trong modules rồi đúng không ? sau đó em thêm "Application.Run "WSActivate""vào có phải vậy không?
Private Sub cmdsave_Click()
If Me.txtMaNV = "" Then
Application.Run "WSActivate"
Sheets("Setup").Select
Cells(MaxRowData1, 1) = Me.txtMaNV.Value
Cells(MaxRowData1, 2) = Me.txtTenNV.Value
Cells(MaxRowData1, 3) = Me.txtPhongBan.Value

.....
....
vì em dốt quá, bác thông cảm nhé! mong bác chỉ giáo thêm.
 
Upvote 0
Bạn chưa đặt name cho MaxDataRow1,MaxDataRow2.
Bạn xem file đính kèm, code chỗ nào sửa mình có đánh dấu hết rồi đó. Bạn xem và so sánh với file cũ của bạn nhé.
 

File đính kèm

Upvote 0
em cảm ơn anh Ca_dafi nhiều nha, em hiểu rồi, vậy bây giờ em muốn viết code cho nút Delete để xóa từng record thì em phải làm sao ạ. có phải em khai báo biến MinRowData = COUNTA(DATA!A:A)-1, rồi làm sao để xóa trong danh sách thì em không biết. anh cố gắng nhẫn nại giúp em nhé, đừng giận em học quá ngu nha.
 
Upvote 0
còn nút "Danh mục nhân viên" và "danh mục nơi công tác", em muốn làm như mấy nút bên trên thì làm như thế nào?, làm sao đổi màu nền, không cho nhấp phải chuột chỉnh sửa. em thử làm rất nhiều nhưng không được mấy bác ơi.
 
Upvote 0
Bạn xem file version 4 đính kèm nha. Bạn vào VBA xem thủ tục cho hai nút delete mình viết. Thủ tục detete khó hơn vì phải xử lý tiếp nếu mã tìm được nằm ở vùng nào thì phải copy vùng dưới dòng đã delete lên trên. Không dùng detele dòng trong trường hợp này vì sheet system bạn có tới hai table chứa hai cơ sở dữ liệu khác nhau.
Phù.......
 

File đính kèm

Upvote 0
còn nút "Danh mục nhân viên" và "danh mục nơi công tác", em muốn làm như mấy nút bên trên thì làm như thế nào?, làm sao đổi màu nền, không cho nhấp phải chuột chỉnh sửa. em thử làm rất nhiều nhưng không được mấy bác ơi.

Hai nút bạn làm là có nguồn gốc từ form. Bạn nên tạo nút từ control Toool Box (chuột phải lên thanh menu chọn control tollbox)

Bật chế độ design mode lên
Click chuột phải lên nút, chọn properties
Chỉnh thuộc tính backcolor theo ý muốn (đổi màu nền chỗ này)
Sau đó tắt chế độ Design Mode (không cho nhấp phải chuột chỉnh sửa).
 
Upvote 0
Bạn xem file version 4 đính kèm nha. Bạn vào VBA xem thủ tục cho hai nút delete mình viết. Thủ tục detete khó hơn vì phải xử lý tiếp nếu mã tìm được nằm ở vùng nào thì phải copy vùng dưới dòng đã delete lên trên. Không dùng detele dòng trong trường hợp này vì sheet system bạn có tới hai table chứa hai cơ sở dữ liệu khác nhau.
Phù.......
To Kiệt: Nếu bạn viết như thế này thì không cần đoạn code copy từ dòng dưới lên nữa --> đỡ phức tạp hơn (có thể bỏ hết những dòng đỏ đi).
PHP:
.....
        For i = MaxRowData1 - 1 To 2 Step -1  '2 To MaxRowData1 - 1'
            If LCase(Cells(i, 5)) = LCase(Me.txtMaNV) Then
                Findter = 1
                'Cells(i, 5).ClearContents'
                'Cells(i, 6).ClearContents'
                'Cells(i, 7).ClearContents'
                Range(Cells(i, 5), Cells(i, 7)).Delete Shift:=xlUp
                '====================================='
                'Copy nhung dong du lieu tu duoi dem len tren'
                'If i < MaxRowData1 - 1 Then'
                '    Range("E" & i + 1 & ":G" & MaxRowData1 - 1).Select'
                '    Selection.Cut'
                '    Range("E" & i).Select'
                '    ActiveSheet.Paste'
                'End If'
            End If
 
Upvote 0
Cảm ơn anh MinhLev nhé! Thủ thuật này đơn giản và gọn, vậy mà lại không nhớ! Thanks.
 
Upvote 0
Em cảm ơn anh Tuấn Kiệt nha. em hiểu rồi, chúc anh có một ngày làm việc vui vẻ.
 
Upvote 0
Web KT

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

Back
Top Bottom