Giá trị combobox lấy từ combobox khác. (5 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
E có code sau không biết lỗi tại sao nhờ các cao thủ chỉ giúp. (dòng màu đỏ)

Private Sub SHIFT_change()
On Error Resume Next
If Me.SHIFT = "31" And Hour(Now) >= 21 And Hour(Now) < 24 Then
Me.COMBOBOXNGAY = Format(Now + 1, "Short date")
Me.DATE_RELEASE = Format(COMBOBOXNGAY + 2, "Short date")
Else
Me.COMBOBOXNGAY = Format(Now, "Short date")
Me.DATE_RELEASE = Format(COMBOBOXNGAY + 1, "Short date")


End If


TIME_RELEASE = Format(SHIFT.Column(1), "short time")
End Sub
 
E có code sau không biết lỗi tại sao nhờ các cao thủ chỉ giúp. (dòng màu đỏ)

Private Sub SHIFT_change()
On Error Resume Next
If Me.SHIFT = "31" And Hour(Now) >= 21 And Hour(Now) < 24 Then
Me.COMBOBOXNGAY = Format(Now + 1, "Short date")
Me.DATE_RELEASE = Format(COMBOBOXNGAY + 2, "Short date")
Else
Me.COMBOBOXNGAY = Format(Now, "Short date")
Me.DATE_RELEASE = Format(COMBOBOXNGAY + 1, "Short date")


End If


TIME_RELEASE = Format(SHIFT.Column(1), "short time")
End Sub
Phải thế này mới thực hiện được phép toán:

Me.DATE_RELEASE = Format(CDate(COMBOBOXNGAY) + 1, "Short date")
 
Upvote 0
Trong form e sửa dữ liệu sheet bằng form load lên khi click vào listbox, nếu dòng bị khóa thì yêu cầu nhập password, nhập password sửa xong nhấp vào nút lệnh đưa dữ liệu sữa vào form thì bị lỗi.code của e là:
Private Sub listbox_nhaplieu_Click()
On Error Resume Next
Application.ScreenUpdating = False
Dim allow As Boolean
If listbox_nhaplieu.ListIndex > -1 Then
allow = listbox_nhaplieu.List(listbox_nhaplieu.ListIndex, 24) = "NOLOCK"
If Not allow Then allow = CheckPassword(mat_khau)
If allow Then

EditRow = listbox_nhaplieu.ListIndex + 2

DATE_RELEASE.Text = listbox_nhaplieu.List(EditRow - 2, 0)
COMBOBOXNGAY.Text = listbox_nhaplieu.List(EditRow - 2, 1)
TIME_RELEASE.Text = listbox_nhaplieu.List(EditRow - 2, 2)
SHIFT.Text = listbox_nhaplieu.List(EditRow - 2, 3)
ID.Text = listbox_nhaplieu.List(EditRow - 2, 4)
FGGCAS.Text = listbox_nhaplieu.List(EditRow - 2, 5)
LOT.Text = listbox_nhaplieu.List(EditRow - 2, 6)
NAMEFG.Text = listbox_nhaplieu.List(EditRow - 2, 7)
PKTIME.Text = listbox_nhaplieu.List(EditRow - 2, 8)
TIMESTAR.Text = listbox_nhaplieu.List(EditRow - 2, 9)
TIMEEND.Text = listbox_nhaplieu.List(EditRow - 2, 10)

Suadulieu.Enabled = True
ID.Locked = False
End If
End If
Application.ScreenUpdating = False
End Sub



Private Sub Suadulieu_Click()
'On Error Resume Next


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, g As String, AA As String, AB As String
AA = DATE_RELEASE.Text
AB = COMBOBOXNGAY.Text
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)
g = Trim(REMARK.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
.Cells(EditRow, 1).Value = AA
.Cells(EditRow, 2).Value = AB
.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
.Cells(EditRow, 18).Value = g
listbox_nhaplieu.List(EditRow - 2, 0) = AA
listbox_nhaplieu.List(EditRow - 2, 1) = AB
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 With
COMBOBOXNGAY = ""
DATE_RELEASE = ""
SHIFT = ""
ID = ""
TIME_RELEASE = ""
FGGCAS = ""
LOT = ""
NAMEFG = ""
PKTIME = ""
TIMESTAR = ""
TIMEEND = ""
REMARK = ""
ComboBox1.Text = ""
CheckBox15.Value = True
MsgBox "SUA DU LIEU XONG", vbInformation + vbOKOnly, "Thanh cong"
End If
Suadulieu.Enabled = False

End Sub

Báo lỗi dòng màu đỏ
 
Upvote 0
Có thể chưa khai báo biến này EditRow vi mình không thấy bạn khai báo!!!
 
Upvote 0
Trong form e sửa dữ liệu sheet bằng form load lên khi click vào listbox, nếu dòng bị khóa thì yêu cầu nhập password, nhập password sửa xong nhấp vào nút lệnh đưa dữ liệu sữa vào form thì bị lỗi.code của e là:
Báo lỗi dòng màu đỏ
Cơ bản thì thủ tục này nhìn vào không thấy lỗi nào.
Với sheet nào có Protect thì bạn mở khóa trước.

Với dạng ngày tháng để nhập vào sheet bạn nên khai báo là biến DATE.

Thay vì:

Dim AA As String, AB As String

Thì bạn sửa lại là:

Dim AA As Date, AB As Date

Có như thế thì trong quá trình nhập nó nhập đúng dạng ngày tháng trong sheet của bạn.

Muốn biết lỗi chính xác thì đưa file lên đi hoặc kiểm tra việc khai báo biến có còn sót gì nữa không!

Với thủ tục:

EditRow = listbox_nhaplieu.ListIndex + 2

Thì nếu bạn muốn dùng lại nó thì khai biến ngoài các thủ tục, khai trên cùng của module đại loại như thế này nhé:

Private EditRow As Long

Nhưng tôi nghĩ là không nên dùng lại, cái nào ra cái đó là tốt nhất vì đây là thủ tục nhập khác hoàn toàn với thủ tục chỉnh sửa và chúng chẳng có liên quan trước sau! Bạn phải khai báo biến cho thủ tục chỉnh sửa và tính giá trị cho nó thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
Cơ bản thì thủ tục này nhìn vào không thấy lỗi nào.
Với sheet nào có Protect thì bạn mở khóa trước.

Với dạng ngày tháng để nhập vào sheet bạn nên khai báo là biến DATE.

Thay vì:

Dim AA As String, AB As String

Thì bạn sửa lại là:

Dim AA As Date, AB As Date

Có như thế thì trong quá trình nhập nó nhập đúng dạng ngày tháng trong sheet của bạn.

Muốn biết lỗi chính xác thì đưa file lên đi hoặc kiểm tra việc khai báo biến có còn sót gì nữa không!

Với thủ tục:

EditRow = listbox_nhaplieu.ListIndex + 2

Thì nếu bạn muốn dùng lại nó thì khai biến ngoài các thủ tục, khai trên cùng của module đại loại như thế này nhé:

Private EditRow As Long

Nhưng tôi nghĩ là không nên dùng lại, cái nào ra cái đó là tốt nhất vì đây là thủ tục nhập khác hoàn toàn với thủ tục chỉnh sửa và chúng chẳng có liên quan trước sau! Bạn phải khai báo biến cho thủ tục chỉnh sửa và tính giá trị cho nó thôi.

Bác xem dùm, file e lam có thể nhìn hoa mắt vì không chuyên nghiệp như các bác được nhưng vì nhu cầu nên gắng làm. Xem có gì tức giận bác bỏ qua cho.
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Cơ bản thì thủ tục này nhìn vào không thấy lỗi nào.
Với sheet nào có Protect thì bạn mở khóa trước.

ah vậy code e vân chưa đúng hả bác,ý của e muốn làm là sheet của e luôn protect những cell có dữ liệu sau khi SAVE , nên e muốn lúc mới nhập dữ liệu vào, nếu nhập sai thì có thể sửa ngay. Code sẽ kiểm tra dòng vừa chọn trong listbox nằm trên sheet đó đã bị block chưa, nếu chưa thì load lên form sửa bình thường không bị hỏi password.
-Nếu dòng chọn đã bị block thì hỏi password, nếu có pass nhập vào thì mới load lên form, không có pass nhập vào thì thoát không cho chỉnh sửa.
Do không biết cách làm code kiểm tra dòng chọn đó lock không nên e mới làm thêm code kiểm tra giá trị cột a bị lock không, rồi điền vào vào "NOLOCK" hoặc "LOCK" ở cột [W].
 
Upvote 0
ah vậy code e vân chưa đúng hả bác,ý của e muốn làm là sheet của e luôn protect những cell có dữ liệu sau khi SAVE , nên e muốn lúc mới nhập dữ liệu vào, nếu nhập sai thì có thể sửa ngay. Code sẽ kiểm tra dòng vừa chọn trong listbox nằm trên sheet đó đã bị block chưa, nếu chưa thì load lên form sửa bình thường không bị hỏi password.
-Nếu dòng chọn đã bị block thì hỏi password, nếu có pass nhập vào thì mới load lên form, không có pass nhập vào thì thoát không cho chỉnh sửa.
Do không biết cách làm code kiểm tra dòng chọn đó lock không nên e mới làm thêm code kiểm tra giá trị cột a bị lock không, rồi điền vào vào "NOLOCK" hoặc "LOCK" ở cột [W].
Với cái form đó, code trên cùng của Form là:

Mã:
Option Explicit
Private EditSheet As Worksheet

Thủ tục nhập liệu:

Mã:
Private Sub listbox_nhaplieu_Click()
On Error Resume Next
Dim allow As Boolean
[COLOR=#ff0000]Dim EditRow As Long[/COLOR]

    If listbox_nhaplieu.ListIndex > -1 Then
        allow = listbox_nhaplieu.List(listbox_nhaplieu.ListIndex, 24) = "NOLOCK"
        If Not allow Then allow = CheckPassword(mat_khau)
        If allow Then
        
[COLOR=#ff0000]        EditRow = listbox_nhaplieu.ListIndex[/COLOR]
       
        DATE_RELEASE.Text = listbox_nhaplieu.List(EditRow, 0)
        COMBOBOXNGAY.Text = listbox_nhaplieu.List(EditRow, 1)
        TIME_RELEASE.Text = listbox_nhaplieu.List(EditRow, 2)
        SHIFT.Text = listbox_nhaplieu.List(EditRow, 3)
        ID.Text = listbox_nhaplieu.List(EditRow, 4)
        FGGCAS.Text = listbox_nhaplieu.List(EditRow, 5)
        LOT.Text = listbox_nhaplieu.List(EditRow, 6)
        NAMEFG.Text = listbox_nhaplieu.List(EditRow, 7)
        PKTIME.Text = listbox_nhaplieu.List(EditRow, 8)
        TIMESTAR.Text = listbox_nhaplieu.List(EditRow, 9)
        TIMEEND.Text = listbox_nhaplieu.List(EditRow, 10)
       
        Suadulieu.Enabled = True
        ID.Locked = False
         End If
    End If
End Sub

Thủ tục chỉnh sửa:

Mã:
Private Sub Suadulieu_Click()
'On Error Resume Next


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, g As String


[COLOR=#0000cd]Dim AA As Date, AB As Date[/COLOR]
[COLOR=#ff0000]Dim EditRow As Long[/COLOR]

[COLOR=#0000cd]    AA = DATE_RELEASE.Text[/COLOR]
[COLOR=#0000cd]    AB = COMBOBOXNGAY.Text[/COLOR]

[COLOR=#ff0000]    EditRow = listbox_nhaplieu.ListIndex + 2[/COLOR]
    
    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)
    g = Trim(REMARK.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
                .Cells(EditRow, 1).Value = AA
                .Cells(EditRow, 2).Value = AB
                .Cells(EditRow + 1, 3).Value = a1
                .Cells(EditRow + 1, 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
                .Cells(EditRow, 18).Value = g
                    listbox_nhaplieu.List(EditRow - 2, 0) = AA
                    listbox_nhaplieu.List(EditRow - 2, 1) = AB
                    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 With
        COMBOBOXNGAY = ""
        DATE_RELEASE = ""
        SHIFT = ""
        ID = ""
        TIME_RELEASE = ""
        FGGCAS = ""
        LOT = ""
        NAMEFG = ""
        PKTIME = ""
        TIMESTAR = ""
        TIMEEND = ""
        REMARK = ""
        ComboBox1.Text = ""
        CheckBox15.Value = True
        MsgBox "SUA DU LIEU XONG", vbInformation + vbOKOnly, "Thanh cong"
    End If
    Suadulieu.Enabled = False
    
End Sub

Tôi chỉ sửa cho hợp lý, bạn copy về và thay thế rồi test xem có còn lỗi nữa không nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Vẫn không được bác, báo lỗi chỗ màu đỏ. E chọn FHC_KWT2 (chỗ combobox chọn line sửa)->nhập pass "GPE" chọn dòng đã lock ->load form ->chỉnh sửa-> click nút "sua du lieu" thì báo lỗi.
......
With EditSheet
.Cells(EditRow, 1).Value = AA
.Cells(EditRow, 2).Value = AB
.....
 
Upvote 0
Vẫn không được bác, báo lỗi chỗ màu đỏ. E chọn FHC_KWT2 (chỗ combobox chọn line sửa)->nhập pass "GPE" chọn dòng đã lock ->load form ->chỉnh sửa-> click nút "sua du lieu" thì báo lỗi.
Cho tôi hỏi, cách bạn chỉnh sửa là như thế nào? Phải chăng đặt con trỏ vào hàng nào đó trên listbox?
 
Upvote 0
Đúng là đặt con trỏ để chọn trên listbox bác.
Khi tôi tải file bạn về, tôi không thấy listbox nó hoạt động? Tôi thử nút Input và nhập hết những gì trên các testbox và nó cũng không hiển thị dữ liệu nhập trên listbox, vậy sao nó có thể chỉnh sửa cho bạn được? Tôi cũng hoàn toàn không biết nguyên lý hoạt động của form nữa! hic hic.

Tôi cũng không biết sao bạn lại lưu file dưới dạng:

Microsoft Excel Binary Worksheet (.xlsb)
 
Lần chỉnh sửa cuối:
Upvote 0
Khi tôi tải file bạn về, tôi không thấy listbox nó hoạt động? Tôi thử nút Input và nhập hết những gì trên các testbox và nó cũng không hiển thị dữ liệu nhập trên listbox, vậy sao nó có thể chỉnh sửa cho bạn được? Tôi cũng hoàn toàn không biết nguyên lý hoạt động của form nữa! hic hic.

Tôi cũng không biết sao bạn lại lưu file dưới dạng:

Microsoft Excel Binary Worksheet (.xlsb)
Bác phải làm thế này thì mới hiện:

1. mở file form hiện lên->Bỏ chọn check box "sửa dữ liệu" ->trong text box "chọn line sửa" chọn FHC_KWT2 -> click vào dòng trong listbox ->check nếu ở cột [W]="nolock" -> load lên form ->chỉnh sửa dữ liệu -> nhấp "Edit data" -> CHƯA LÀM ĐƯỢC

2. mở file form hiện lên->Bỏ chọn check box "sửa dữ liệu" ->trong text box "chọn line sửa" chọn FHC_KWT2 -> click vào dòng trong listbox ->check nếu ở cột [W]="lock" ->yêu cầu nhập password : password = GPE-> load lên form ->chỉnh sửa dữ liệu -> nhấp "Edit data"


E lưu file dưới dạng đó vì được cao thủ GPE chỉ điểm cho, như vậy vừa sử dụng macro được, vừa nhẹ file và tốc độ xử lý nhanh .
 
Upvote 0
Bác phải làm thế này thì mới hiện:

1. mở file form hiện lên->Bỏ chọn check box "sửa dữ liệu" ->trong text box "chọn line sửa" chọn FHC_KWT2 -> click vào dòng trong listbox ->check nếu ở cột [W]="nolock" -> load lên form ->chỉnh sửa dữ liệu -> nhấp "Edit data" -> CHƯA LÀM ĐƯỢC

2. mở file form hiện lên->Bỏ chọn check box "sửa dữ liệu" ->trong text box "chọn line sửa" chọn FHC_KWT2 -> click vào dòng trong listbox ->check nếu ở cột [W]="lock" ->yêu cầu nhập password : password = GPE-> load lên form ->chỉnh sửa dữ liệu -> nhấp "Edit data"


E lưu file dưới dạng đó vì được cao thủ GPE chỉ điểm cho, như vậy vừa sử dụng macro được, vừa nhẹ file và tốc độ xử lý nhanh .

OK, bạn hướng dẫn vậy tôi mới tìm ra được nguyên nhân:

Nói chung nguyên nhân chủ yếu là bạn không mở khóa sheet và sau đó không khóa lại sheet.

Đây là code tôi đã sửa lại. Bạn kiểm tra xem nhé!

Mã:
Private Sub listbox_nhaplieu_Click()
    With listbox_nhaplieu
        If .ListCount = 0 Then Exit Sub
        Dim allow As Boolean
        allow = .List(.ListIndex, 22) = "NOLOCK"
        If Not allow Then allow = CheckPassword(mat_khau)
        If allow Then
            EditRow = .ListIndex + 3
            DATE_RELEASE.Text = .Value
            COMBOBOXNGAY.Text = .List(, 1)
            TIME_RELEASE.Text = .List(, 2)
            SHIFT.Text = .List(, 3)
            ID.Text = .List(, 4)
            FGGCAS.Text = .List(, 5)
            LOT.Text = .List(, 6)
            NAMEFG.Text = .List(, 7)
            PKTIME.Text = .List(, 8)
            TIMESTAR.Text = .List(, 9)
            TIMEEND.Text = .List(, 10)
            REMARK.Text = .List(, 17)
            Suadulieu.Enabled = True
            ID.Locked = False
        End If
    End With
End Sub

Và:

Mã:
Private Sub Suadulieu_Click()

Dim i As Long, 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, g As String
Dim AA As Date, AB As Date
    AA = DATE_RELEASE.Text
    AB = COMBOBOXNGAY.Text
    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)
    g = Trim(REMARK.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
            .Unprotect "GPE"
            .Cells(EditRow, 1).Value = AA
            .Cells(EditRow, 2).Value = AB
            .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
            .Cells(EditRow, 18).Value = g
            .Protect "GPE"
        End With
        COMBOBOXNGAY = ""
        DATE_RELEASE = ""
        SHIFT = ""
        ID = ""
        TIME_RELEASE = ""
        FGGCAS = ""
        LOT = ""
        NAMEFG = ""
        PKTIME = ""
        TIMESTAR = ""
        TIMEEND = ""
        REMARK = ""
        ComboBox1.Text = ""
        CheckBox15.Value = True
        MsgBox "SUA DU LIEU XONG", vbInformation + vbOKOnly, "Thanh cong"
    End If
    Suadulieu.Enabled = False
    
End Sub

Nghĩ cũng lạ, tính luôn cột LOCK, NOLOCK thì có 23 cột, mà sao bạn cho Arr lên tới 24 cột là sao ta?
 
Upvote 0
View attachment 114672
OK, bạn hướng dẫn vậy tôi mới tìm ra được nguyên nhân:

Nói chung nguyên nhân chủ yếu là bạn không mở khóa sheet và sau đó không khóa lại sheet.

Đây là code tôi đã sửa lại. Bạn kiểm tra xem nhé!

Mã:
Private Sub listbox_nhaplieu_Click()
    With listbox_nhaplieu
        If .ListCount = 0 Then Exit Sub
        Dim allow As Boolean
        allow = .List(.ListIndex, 22) = "NOLOCK"
        If Not allow Then allow = CheckPassword(mat_khau)
        If allow Then
            EditRow = .ListIndex + 3
            DATE_RELEASE.Text = .Value
            COMBOBOXNGAY.Text = .List(, 1)
            TIME_RELEASE.Text = .List(, 2)
            SHIFT.Text = .List(, 3)
            ID.Text = .List(, 4)
            FGGCAS.Text = .List(, 5)
            LOT.Text = .List(, 6)
            NAMEFG.Text = .List(, 7)
            PKTIME.Text = .List(, 8)
            TIMESTAR.Text = .List(, 9)
            TIMEEND.Text = .List(, 10)
            REMARK.Text = .List(, 17)
            Suadulieu.Enabled = True
            ID.Locked = False
        End If
    End With
End Sub

Và:

Mã:
Private Sub Suadulieu_Click()

Dim i As Long, 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, g As String
Dim AA As Date, AB As Date
    AA = DATE_RELEASE.Text
    AB = COMBOBOXNGAY.Text
    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)
    g = Trim(REMARK.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
            .Unprotect "GPE"
            .Cells(EditRow, 1).Value = AA
            .Cells(EditRow, 2).Value = AB
            .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
            .Cells(EditRow, 18).Value = g
            .Protect "GPE"
        End With
        COMBOBOXNGAY = ""
        DATE_RELEASE = ""
        SHIFT = ""
        ID = ""
        TIME_RELEASE = ""
        FGGCAS = ""
        LOT = ""
        NAMEFG = ""
        PKTIME = ""
        TIMESTAR = ""
        TIMEEND = ""
        REMARK = ""
        ComboBox1.Text = ""
        CheckBox15.Value = True
        MsgBox "SUA DU LIEU XONG", vbInformation + vbOKOnly, "Thanh cong"
    End If
    Suadulieu.Enabled = False
    
End Sub

Nghĩ cũng lạ, tính luôn cột LOCK, NOLOCK thì có 23 cột, mà sao bạn cho Arr lên tới 24 cột là sao ta?
E đếm nhầm rồi...
Vẫn lỗi bác ạ, e chọn click dòng trong listbox thì báo lỗi code dòng màu đỏ bác:

Private Sub listbox_nhaplieu_Click()
With listbox_nhaplieu
If .ListCount = 0 Then Exit Sub
Dim allow As Boolean
allow = .List(.ListIndex, 22) = "NOLOCK"
If Not allow Then allow = CheckPassword(mat_khau)
If allow Then
EditRow = .ListIndex + 3
DATE_RELEASE.Text = .Value
COMBOBOXNGAY.Text = .List(, 1)
TIME_RELEASE.Text = .List(, 2)
SHIFT.Text = .List(, 3)
ID.Text = .List(, 4)
FGGCAS.Text = .List(, 5)
LOT.Text = .List(, 6)
NAMEFG.Text = .List(, 7)
PKTIME.Text = .List(, 8)
TIMESTAR.Text = .List(, 9)
TIMEEND.Text = .List(, 10)
REMARK.Text = .List(, 17)
Suadulieu.Enabled = True
ID.Locked = False
End If
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
E đếm nhầm rồi...Vẫn lỗi bác ạ, e chọn click dòng trong listbox thì báo lỗi code dòng màu đỏ bác:
Trong thủ tục:

Private Sub ComboBox1_Change()

Cái nào có 24 thì sửa lại 23.

------------------------------------------------
Với file code chấp vá như file bạn nếu bỏ On Error Resume Next đi thì lỗi còn dài dài bạn ơi. Tôi chỉ có thể nói là "vá lỗi" cho bạn, chứ nếu phải làm thì file bạn phải làm lại từ đầu theo kiểu của tôi sẽ ngắn gọn hơn, nhanh hơn, nhưng thật tình tôi không có đủ kiên nhẫn và thời gian để thực hiện toàn bộ như thế.
 
Lần chỉnh sửa cuối:
Upvote 0
Trong thủ tục:

Private Sub ComboBox1_Change()

Cái nào có 24 thì sửa lại 23.

------------------------------------------------
Với file code chấp vá như file bạn nếu bỏ On Error Resume Next đi thì lỗi còn dài dài bạn ơi. Tôi chỉ có thể nói là "vá lỗi" cho bạn, chứ nếu phải làm thì file bạn phải làm lại từ đầu theo kiểu của tôi sẽ ngắn gọn hơn, nhanh hơn, nhưng thật tình tôi không có đủ kiên nhẫn và thời gian để thực hiện toàn bộ như thế.
Hic để e xem lại, vì e mới biết làm nên chắp vá , đúng là mỗi lần nhập liệu code e chạy cũng hơi lâu.Bác mà giúp thì còn gì bằng.Đành hỏi bác giỏi hơn e nhờ giúp đỡ khắc phục thôi code e thôi.Bác chịu giúp vậy là e cảm ơn lắm rồi.(Ai cũng có việc của mình ma)
 
Lần chỉnh sửa cuối:
Upvote 0
Hic để e xem lại, vì e mới biết làm nên chắp vá , đúng là mỗi lần nhập liệu code e chạy cũng hơi lâu.Bác mà giúp thì còn gì bằng.Đành hỏi bác giỏi hơn e nhờ giúp đỡ khắc phục thôi code e thôi.Bác chịu giúp vậy là e cảm ơn lắm rồi.(Ai cũng có việc của mình ma)
Mà tôi kiểm tra lại code tôi gửi lên, có thấy bị lỗi đó nữa đâu?
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom