Lấy số báo danh cho danh sách (1 người xem)

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

Thuyanhanoi

Thành viên thường trực
Tham gia
15/10/12
Bài viết
304
Được thích
154
Nghề nghiệp
Nhân viên
- Em có viết một macro lấy số báo danh cho danh sách như sau:
Mã:
Public Sub Phieu_diem()Dim I As Long, J As Long, K As Long, sArr(), dArr(), SBD As String
With Sheets("PHIEU_DIEM")
    SBD = .[M14].Value
End With
With Sheets("DS_duoc_du_thi")
    sArr = .Range(.[A12], .[A65000].End(xlUp)).Resize(, 11).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
For I = 1 To UBound(sArr, 1)
    If SBD <> "" Then
        K = K + 1
        SBD = SBD + 1
        dArr(K, 1) = K
        dArr(K, 2) = "P" & SDB
        For J = 4 To 6
            dArr(K, J) = sArr(I, J - 1)
        Next J
     Else
        K = K + 1
        dArr(K, 1) = K
        dArr(K, 2) = sArr(I, 2)
        For J = 4 To 6
            dArr(K, J) = sArr(I, J - 1)
        Next J
    End If
Next I
With Sheets("PHIEU_DIEM")
    .[A15:K100].ClearContents
    .[A15:K100].Borders.LineStyle = xlNone
    .[A15].Resize(K, 6).Value = dArr
    .[A15].Resize(K, 11).Borders.LineStyle = xlContinuous
    .[A15].Resize(K, 11).Borders(xlInsideHorizontal).Weight = xlHairline
    .[D15].Resize(K, 2).Borders(xlInsideVertical).LineStyle = xlNone
End With
End Sub
- Nếu không chọn số báo danh bắt đầu từ ô M14 thì danh sách Phiếu điểm có số báo danh được lấy từ sheet DS_duoc_du_thi: Đó là mã HS như đã làm được trong code .
- Nếu nhập số báo danh bắt đầu cho ô M14 (Số báo danh có cả phần chữ và phần số ví dụ nhập số báo danh bắt đầu là P0001 các số báo danh khác có phần số tăng dần cho đến hết danh sách thì code của em không ăn nhời.
- Em rất mong được mọi người hướng dẫn giúp em!.
 

File đính kèm

Lần chỉnh sửa cuối:
- Em có viết một macro lấy số báo danh cho danh sách như sau:

- Nếu không chọn số báo danh bắt đầu từ ô M14 thì danh sách Phiếu điểm có số báo danh được lấy từ sheet DS_duoc_du_thi: Đó là mã HS như đã làm được trong code .
- Nếu nhập số báo danh bắt đầu cho ô M14 (Số báo danh có cả phần chữ và phần số ví dụ nhập số báo danh bắt đầu là P0001 các số báo danh khác có phần số tăng dần cho đến hết danh sách thì code của em không ăn nhời.
- Em rất mong được mọi người hướng dẫn giúp em!.
Siêng quá hé Hội!
PHP:
dArr(K, 2) = "P" & SDB
Cái SDB ở đâu vậy?
M14= Empty thì biết SBD bi nhiêu mà chạy code? Cho nó "đi Ba Thê" luôn cho rồi, Khi nào M14 có số gì đó thì code mới chạy.
M14 chỉ nhập Number thôi nghe. Số lẻ càng vui!
PHP:
Public Sub Phieu_diem()
Dim I As Long, sArr(), dArr(), SBD As Long
With Sheets("DS_duoc_du_thi")
    sArr = .Range(.[A12], .[A65000].End(xlUp)).Resize(, 11).Value
End With
With Sheets("PHIEU_DIEM")
    .[A15:K100].ClearContents
    .[A15:K100].Borders.LineStyle = xlNone
    If .[M14] <> Empty Then
        SBD = .[M14].Value - 1      'Hic hic...'
        ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
        For I = 1 To UBound(sArr, 1)
            SBD = SBD + 1
            dArr(I, 1) = I
            dArr(I, 2) = "P" & Format(SBD, "0000")
            For J = 4 To 6
                dArr(I, J) = sArr(I, J - 1)
            Next J
        Next I
        .[A15].Resize(I - 1, 6).Value = dArr
        .[A15].Resize(I - 1, 11).Borders.LineStyle = xlContinuous
        .[A15].Resize(I - 1, 11).Borders(xlInsideHorizontal).Weight = xlHairline
        .[D15].Resize(I - 1, 2).Borders(xlInsideVertical).LineStyle = xlNone
    Else
        MsgBox "SBD tren sao hoa", , "Hic hic hic"
    End If
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Hì hì em học theo cách viết của Thầy, em cũng phân vân chỗ này
HTML:
M14= Empty thì biết SBD bi nhiêu mà chạy code
Nhưng loay hoay mà chẳng biết sửa làm sao?. Với chỗ này của Thầy
HTML:
"P" & Format(SBD, "0000")
mà em phải tìm cả buổi mà không được.
- Trường hợp có nhập số báo danh Tại "M14"
HTML:
.[M14] <> Empty Then
như code của Thầy thì tốt rồi.
- Khi trước với suy nghĩ của em là số báo danh có cả phần chữ và phần số nhưng em không biết phải kết hợp chúng ra sao nên em đặt luôn trong code và được Thầy sửa cho em
HTML:
dArr(I, 2) = "P" & Format(SBD, "0000")
để khi sử dụng em chỉ việc sửa thành:
HTML:
"P1" & Format(SBD, "0000")  Lấy danh sách phòng 1
"P2" & Format(SBD, "0000")  Lấy danh sách phòng 2....
Như Vậy mỗi lần lấy danh sách điều chỉnh trên lại phải vào code sửa cũng không tiện, Vậy có giải pháp nào để code lấy phần chữ Tại M13 phần số tại M14. Nếu phần chữ tại M13 = rỗng ("") thì code chỉ lấy phần số tai M14. Nếu cả M13 Và M14 = rỗng phần số và phần chữ đều không được nhập thì code lấy số báo danh và danh sách ở sheet "PHIEU_DIEM", số báo danh được lấy chính là mã HS và danh sách ở bên sheet "DS_duoc_du_thi" sang.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thử lại với cái này xem:
PHP:
Public Sub Phieu_diem()
Dim I As Long, sArr(), dArr(), K As Long, SBD As Long
With Sheets("DS_duoc_du_thi")
    sArr = .Range(.[A12], .[A65000].End(xlUp)).Resize(, 11).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("PHIEU_DIEM")
    .[A15:K100].ClearContents
    .[A15:K100].Borders.LineStyle = xlNone
    SBD = Sheets("PHIEU_DIEM").[M14].Value - 1      'Hic hic...'
        For I = 1 To UBound(sArr, 1)
            K = K + 1
            dArr(K, 1) = I: SBD = SBD + 1
            dArr(K, 2) = IIf(.[M14] <> Empty, "P" & Format(SBD, "0000"), sArr(I, 2))
            For J = 4 To 6
                dArr(K, J) = sArr(I, J - 1)
            Next J
        Next I
        .[A15].Resize(K, 6).Value = dArr
        .[A15].Resize(K, 11).Borders.LineStyle = xlContinuous
        .[A15].Resize(K, 11).Borders(xlInsideHorizontal).Weight = xlHairline
        .[D15].Resize(K, 2).Borders(xlInsideVertical).LineStyle = xlNone
End With
End Sub
 
Upvote 0
Híc híc đang sửa thêm nội dung đã đươc sư phụ up file rồi
 
Upvote 0
Thầy xem cho em chỗ này với
HTML:
Như Vậy mỗi lần lấy danh sách điều chỉnh trên lại phải vào code sửa cũng không tiện, Vậy có giải pháp nào để code lấy phần chữ Tại M13 phần số tại M14. Nếu phần chữ tại M13 = rỗng ("") thì code chỉ lấy phần số tai M14. Nếu cả M13 Và M14 = rỗng phần số và phần chữ đều không được nhập thì code lấy số báo danh và danh sách ở sheet "PHIEU_DIEM", số báo danh được lấy chính là mã HS và danh sách ở bên sheet "DS_duoc_du_thi" sang.
- Viết lại ngắn gọn hơn thì thế này ạ!.
HTML:
- Nếu M13 = "" Thì lấy SBD theo M14
- Nếu M13 & M14 = "" thì SBD và danh sách tương ứng được lấy theo mã HS và danh sách tại sheet  DS_duoc_du_thi.
 
Upvote 0
Híc híc đang sửa thêm nội dung đã đươc sư phụ up file rồi
Làm 3 chuyện thôi:
- Khai báo thêm 1 biến P gì đó.
- Gán P=[M13]
- Thay dòng
PHP:
dArr(K, 2) = IIf(.[M14] <> Empty, "P" & Format(SBD, "0000"), sArr(I, 2))
Bằng 
dArr(K, 2) = IIf(.[M14] <> Empty, P & Format(SBD, "0000"), sArr(I, 2))
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
- Hì hì
HTML:
Làm 3 chuyện thôi:
Cũng trên cả tuyệt vời, Em cảm ơn Thầy
 
Upvote 0

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

Back
Top Bottom