Code chỉnh sửa dữ liệu đã khóa trên form (1 người xem)

Liên hệ QC

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

phongkiemtinh

Thành viên thường trực
Tham gia
22/7/09
Bài viết
224
Được thích
5
Mình có 1 file nhập liệu bằng form sau, khi mở file auto open form, sau khi nhập liệu nhấn “cancel “ để lưu và đóng file.
Mình có vấn đề khi sửa dữ liệu trên form cần hỏi là:

1/. khi chọn bỏ stick ở check box15 (nhập dữ liệu) ->ở label14 (chọn sheet sửa) chọn sheet FHC_KWT2 -> chọn dòng dữ liệu đầu tiên đã nhập có sẳn, đang hiển thị trong “listbox_nhaplieu” phía dưới -> thông tin các dữ liệu nhập vào được load vào trên form-> mình chỉnh sửa và nhấp vào command “sửa dữ liệu” thì bào lỗi. “run time error 1004: The item with the specified name wasn’t found”

->mình nghĩ lỗi này là do dòng dữ liệu này nhập vào sau khi lưu lại, dòng dữ liệu đã được proctect theo code khóa dữ liệu sau khi có data. Mình muốn thêm chút code để hỏi password và có password nhập vào thì mới cho sửa những dòng dữ liệu bị khóa. Không có password thì thoát ra trở về trạng thái form trống. Mình thử với những dòng chưa khóa thì code mình chạy sửa không bị gì, chỉ bị sau khi lưu và sửa thì không được.

2./ Vấn đề nữa là làm các bước trên ………..nhưng khi chọn dòng dữ liệu đang hiển thị trong “listbox_nhaplieu” phía dưới , nhưng lỡ bấm chọn nhầm vào dòng phía dưới không có dữ liệu (dòng trống phía dưới dòng có dữ lieu thì bị lỗi.

->>báo lỗi ở Private Sub Suadulieu_Click() trong form.
Mong GPE xem file đính kèm giúp đỡ dùm.
 
Lần chỉnh sửa cuối:
Mình có 1 file nhập liệu bằng form sau, khi mở file auto open form, sau khi nhập liệu nhấn “cancel “ để lưu và đóng file.
Mình có vấn đề khi sửa dữ liệu trên form cần hỏi là:

1/. khi chọn bỏ stick ở check box15 (nhập dữ liệu) ->ở label14 (chọn sheet sửa) chọn sheet FHC_KWT2 -> chọn dòng dữ liệu đầu tiên đã nhập có sẳn, đang hiển thị trong “listbox_nhaplieu” phía dưới -> thông tin các dữ liệu nhập vào được load vào trên form-> mình chỉnh sửa và nhấp vào command “sửa dữ liệu” thì bào lỗi. “run time error 1004: The item with the specified name wasn’t found”

->mình nghĩ lỗi này là do dòng dữ liệu này nhập vào sau khi lưu lại, dòng dữ liệu đã được proctect theo code khóa dữ liệu sau khi có data. Mình muốn thêm chút code để hỏi password và có password nhập vào thì mới cho sửa những dòng dữ liệu bị khóa. Không có password thì thoát ra trở về trạng thái form trống. Mình thử với những dòng chưa khóa thì code mình chạy sửa không bị gì, chỉ bị sau khi lưu và sửa thì không được.

2./ Vấn đề nữa là làm các bước trên ………..nhưng khi chọn dòng dữ liệu đang hiển thị trong “listbox_nhaplieu” phía dưới , nhưng lỡ bấm chọn nhầm vào dòng phía dưới không có dữ liệu (dòng trống phía dưới dòng có dữ lieu thì bị lỗi.

->>báo lỗi ở Private Sub Suadulieu_Click() trong form.
Mong GPE xem file đính kèm giúp đỡ dùm.
Mình làm được code phần
1/. khi chọn bỏ stick ở check box15 (nhập dữ liệu) ->ở label14 (chọn sheet sửa) chọn sheet FHC_KWT2 -> chọn dòng dữ liệu đầu tiên đã nhập có sẳn, đang hiển thị trong “listbox_nhaplieu” phía dưới -> thông tin các dữ liệu nhập vào được load vào trên form-> mình chỉnh sửa và nhấp vào command “sửa dữ liệu” thì bào lỗi. “run time error 1004: The item with the specified name wasn’t found”

Bằng code:

Private Sub Suadulieu_Click()'On Error Resume Next
Dim Password As String
Dim I As Long, Sua(1 To 11), a As String, b As String, c As String, d As String, e As String, f As String
Dim a1 As String, a2 As String, b1 As String
a = Trim(SHIFT.Text)
a1 = Trim(TIME_RELEASE.Text)
a2 = Trim(ID.Text)
b = Trim(FGGCAS.Text)
c = Trim(LOT.Text)
b1 = Trim(NAMEFG.Text)
d = Trim(PKTIME.Text)
e = Trim(TIMESTAR.Text)
f = Trim(TIMEEND.Text)


If a = "" Or a1 = "" Or a2 = "" Or b = "" Or b1 = "" Or c = "" Or d = "" Or e = "" Or f = "" Then
MsgBox "Hay nhap day du du lieu", vbExclamation + vbOKOnly, "ERROR nhap lieu"
Else
With EditSheet
If Cells.Locked = True Then
Password = InputBox("Please Enter Password")
If Password <> "GPE" Then
MsgBox "Sai Password,du lieu khong duoc sua."
Suadulieu.Enabled = False
COMBOBOXNGAY = ""
DATE_RELEASE = ""
SHIFT = ""
ID = ""
TIME_RELEASE = ""
FGGCAS = ""
LOT = ""
NAMEFG = ""
PKTIME = ""
TIMESTAR = ""
TIMEEND = ""

Exit Sub
Else
.Unprotect "GPE"

.Cells(EditRow, 3).Value = a1
.Cells(EditRow, 4).Value = a
.Cells(EditRow, 5).Value = a2
.Cells(EditRow, 6).Value = b
.Cells(EditRow, 7).Value = c
.Cells(EditRow, 8).Value = b1
.Cells(EditRow, 9).Value = d
.Cells(EditRow, 10).Value = e
.Cells(EditRow, 11).Value = f
listbox_nhaplieu.List(EditRow - 2, 2) = a1
listbox_nhaplieu.List(EditRow - 2, 3) = a
listbox_nhaplieu.List(EditRow - 2, 4) = a2
listbox_nhaplieu.List(EditRow - 2, 5) = b
listbox_nhaplieu.List(EditRow - 2, 6) = c
listbox_nhaplieu.List(EditRow - 2, 7) = b1
listbox_nhaplieu.List(EditRow - 2, 8) = d
listbox_nhaplieu.List(EditRow - 2, 9) = e
listbox_nhaplieu.List(EditRow - 2, 10) = f
End If
End If
End With
COMBOBOXNGAY = ""
DATE_RELEASE = ""
SHIFT = ""
ID = ""
TIME_RELEASE = ""
FGGCAS = ""
LOT = ""
NAMEFG = ""
PKTIME = ""
TIMESTAR = ""
TIMEEND = ""
MsgBox "SUA DU LIEU XONG", vbInformation + vbOKOnly, "Thanh cong"
End If
End Sub


Nhưng lại gặp phải vấn đề là khi nhấp nút sửa dữ liệu xong, kiểm tra lại thì dữ liệu sửa không điền vào đúng dòng cần sửa mà lại điền vào dòng thứ 2 trở đi, có nghĩa là giống như nhập dữ liệu mới, xoá các dòng dữ liệu cũ có sẵn không cần sửa.(tóm lại dữ liệu sửa không điền vào đúng dòng cần sửa mà điền vào dòng khác). Các anh chị diễn đàn giúp e với.
Còn vấn đề câu hỏi thứ 2 chưa làm được gì.
 
Upvote 0
Mình làm được code phần
1/. khi chọn bỏ stick ở check box15 (nhập dữ liệu) ->ở label14 (chọn sheet sửa) chọn sheet FHC_KWT2 -> chọn dòng dữ liệu đầu tiên đã nhập có sẳn, đang hiển thị trong “listbox_nhaplieu” phía dưới -> thông tin các dữ liệu nhập vào được load vào trên form-> mình chỉnh sửa và nhấp vào command “sửa dữ liệu” thì bào lỗi. “run time error 1004: The item with the specified name wasn’t found”

Bằng code:

Private Sub Suadulieu_Click()'On Error Resume Next
Dim Password As String
Dim I As Long, Sua(1 To 11), a As String, b As String, c As String, d As String, e As String, f As String
Dim a1 As String, a2 As String, b1 As String
a = Trim(SHIFT.Text)
a1 = Trim(TIME_RELEASE.Text)
a2 = Trim(ID.Text)
b = Trim(FGGCAS.Text)
c = Trim(LOT.Text)
b1 = Trim(NAMEFG.Text)
d = Trim(PKTIME.Text)
e = Trim(TIMESTAR.Text)
f = Trim(TIMEEND.Text)


If a = "" Or a1 = "" Or a2 = "" Or b = "" Or b1 = "" Or c = "" Or d = "" Or e = "" Or f = "" Then
MsgBox "Hay nhap day du du lieu", vbExclamation + vbOKOnly, "ERROR nhap lieu"
Else
With EditSheet
If Cells.Locked = True Then
Password = InputBox("Please Enter Password")
If Password <> "GPE" Then
MsgBox "Sai Password,du lieu khong duoc sua."
Suadulieu.Enabled = False
COMBOBOXNGAY = ""
DATE_RELEASE = ""
SHIFT = ""
ID = ""
TIME_RELEASE = ""
FGGCAS = ""
LOT = ""
NAMEFG = ""
PKTIME = ""
TIMESTAR = ""
TIMEEND = ""

Exit Sub
Else
.Unprotect "GPE"

.Cells(EditRow, 3).Value = a1
.Cells(EditRow, 4).Value = a
.Cells(EditRow, 5).Value = a2
.Cells(EditRow, 6).Value = b
.Cells(EditRow, 7).Value = c
.Cells(EditRow, 8).Value = b1
.Cells(EditRow, 9).Value = d
.Cells(EditRow, 10).Value = e
.Cells(EditRow, 11).Value = f
listbox_nhaplieu.List(EditRow - 2, 2) = a1
listbox_nhaplieu.List(EditRow - 2, 3) = a
listbox_nhaplieu.List(EditRow - 2, 4) = a2
listbox_nhaplieu.List(EditRow - 2, 5) = b
listbox_nhaplieu.List(EditRow - 2, 6) = c
listbox_nhaplieu.List(EditRow - 2, 7) = b1
listbox_nhaplieu.List(EditRow - 2, 8) = d
listbox_nhaplieu.List(EditRow - 2, 9) = e
listbox_nhaplieu.List(EditRow - 2, 10) = f
End If
End If
End With
COMBOBOXNGAY = ""
DATE_RELEASE = ""
SHIFT = ""
ID = ""
TIME_RELEASE = ""
FGGCAS = ""
LOT = ""
NAMEFG = ""
PKTIME = ""
TIMESTAR = ""
TIMEEND = ""
MsgBox "SUA DU LIEU XONG", vbInformation + vbOKOnly, "Thanh cong"
End If
End Sub


Nhưng lại gặp phải vấn đề là khi nhấp nút sửa dữ liệu xong, kiểm tra lại thì dữ liệu sửa không điền vào đúng dòng cần sửa mà lại điền vào dòng thứ 2 trở đi, có nghĩa là giống như nhập dữ liệu mới, xoá các dòng dữ liệu cũ có sẵn không cần sửa.(tóm lại dữ liệu sửa không điền vào đúng dòng cần sửa mà điền vào dòng khác). Các anh chị diễn đàn giúp e với.
Còn vấn đề câu hỏi thứ 2 chưa làm được gì.
Diễn đàn nhiều người giỏi VB giúp mình với?
 
Upvote 0
đăng bài lâu mà ko thấy ai giúp e với.Có ai chỉ dùm e code để xác định 1 dòng (có giới hạn từ cột [A] tới cột[J] có protect hay không? trong sheet đã proctect những cell có dữ liệu từ [A1:J400], cell không có dữ liệu vẫn mở.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom