Lỗi gán giá trị của biến kiểu Date vào ô trong excel

Liên hệ QC

LEHOC

Thành viên chính thức
Tham gia
11/1/17
Bài viết
89
Được thích
0
Em có đoạn mã bị lỗi ở dòng
PHP:
Sh1.Range("A" & i).Value = Format(StartDate, "dd-mm-yyyy")
mà không biết cách sửa, anh/chị nào biết chỉ em với ạ.
Giá trị trong ô A11: "Từ ngày 01-07-2019 đến ngày 05-08-2019"
Đoạn mã của em ạ:
PHP:
Sub Calling()
    Dim test
    Dim StartDt, EndDt As String
    Dim RngStart As String
    Dim i As Integer
    Set Sh2 = Sheet2
    RngStart = Sh2.Range("B1").End(xlDown).End(xlToRight).Address()
    i = Sh2.Range(RngStart).Row + 1
    StartDt = Format(Mid(Sh2.Range("A11"), 9, 10), "dd/mm/yyyy")
    EndDt = Format(Mid(Sh2.Range("A11"), 29, 10), "dd/mm/yyyy")
'    MsgBox StartDt & " - " & EndDt
    test = getDates(StartDt, EndDt, i)
End Sub
Function getDates(ByVal StartDate As Date, ByVal EndDate As Date, ByVal i As Integer) As Variant
    Dim varDates()      As Date
    Dim lngDateCounter  As Long
    ReDim varDates(1 To CLng(EndDate) - CLng(StartDate))
    For lngDateCounter = LBound(varDates) To UBound(varDates)
        varDates(lngDateCounter) = CDate(StartDate)
        Sh2.Range("A" & i).Value = Format(StartDate, "dd-mm-yyyy")
        i = i + 1
        StartDate = CDate(CDbl(StartDate) + 1)
    Next lngDateCounter
    getDates = varDates
ClearMemory:
    If IsArray(varDates) Then Erase varDates
    lngDateCounter = Empty
End Function
Em cảm ơn anh/chị!
 

File đính kèm

  • Mẫu xử lý chấm công WiseEyeOn39.xlsm
    40.2 KB · Đọc: 11
Lần chỉnh sửa cuối:
Em có đoạn mã bị lỗi ở dòng
PHP:
Sh1.Range("A" & i).Value = Format(StartDate, "dd-mm-yyyy")
mà không biết cách sửa, anh/chị nào biết chỉ em với ạ.
Giá trị trong ô A11: "Từ ngày 01-07-2019 đến ngày 05-08-2019"
Đoạn mã của em ạ:
PHP:
Sub Calling()
    Dim test
    Dim StartDt, EndDt As String
    Dim RngStart As String
    Dim i As Integer
    Set Sh2 = Sheet2
    RngStart = Sh2.Range("B1").End(xlDown).End(xlToRight).Address()
    i = Sh2.Range(RngStart).Row + 1
    StartDt = Format(Mid(Sh2.Range("A11"), 9, 10), "dd/mm/yyyy")
    EndDt = Format(Mid(Sh2.Range("A11"), 29, 10), "dd/mm/yyyy")
'    MsgBox StartDt & " - " & EndDt
    test = getDates(StartDt, EndDt, i)
End Sub
Function getDates(ByVal StartDate As Date, ByVal EndDate As Date, ByVal i As Integer) As Variant
    Dim varDates()      As Date
    Dim lngDateCounter  As Long
    ReDim varDates(1 To CLng(EndDate) - CLng(StartDate))
    For lngDateCounter = LBound(varDates) To UBound(varDates)
        varDates(lngDateCounter) = CDate(StartDate)
        Sh2.Range("A" & i).Value = Format(StartDate, "dd-mm-yyyy")
        i = i + 1
        StartDate = CDate(CDbl(StartDate) + 1)
    Next lngDateCounter
    getDates = varDates
ClearMemory:
    If IsArray(varDates) Then Erase varDates
    lngDateCounter = Empty
End Function
Em cảm ơn anh/chị!
VBA không hiểu sh2?
Sheet2.Range("A" & i).Value = Format(StartDate, "dd-mm-yyyy")
Code chưa hợp lý, nhưng mới tập viết là giỏi rồi
 
Upvote 0
Chỗ nào chứng minh với bạn là người cắt ghép hiểu code?
Tôi thì thấy rõ ràng là cắt ghép loạn lên hết.
Em fix được rồi bác ơi.
Cảm ơn bác đã quan tâm.
Bài đã được tự động gộp:

Chỗ nào chứng minh với bạn là người cắt ghép hiểu code?
Tôi thì thấy rõ ràng là cắt ghép loạn lên hết.
Em tham khảo code và tuỳ biến, nhưng do chưa thành thạo nên code còn rối, bác chỉ giúp em chỗ "cắt ghép loan" để em sửa đổi với ạ.
Cảm ơn bác.
 
Upvote 0
Web KT
Back
Top Bottom