Tôi có dữ liệu trong một bảng excel theo định dạng sau:VBA Chuyển đổi String để Ngày
ItemCode DeliveryDate 5456987 24.01.2009 5456988 5456989 12.24.2009 5456990 12/24/2009
tôi đã lưu trữ các giá trị của DeliveryDate trong một mảng. Tôi cần đưa ra quyết định về những điều cơ bản về ngày và sau đó in kết quả trong một trang tính mới. Vì vậy, tôi phải chuyển đổi các giá trị vào mảng:
Dim current as Date, highest as Date, result() as Date
For Each itemDate in DeliveryDateArray
current = CDate(itemDate)
if current > highest then
highest = current
end if
' some more operations an put dates into result array
Next itemDate
'After activating final sheet...
Range("A1").Resize(UBound(result), 1).Value = Application.Transpose(result)
Thật không may, CDate() chức năng ném các lỗi:
Run-time error '13':
Type mismatch
Có một hàm trong VBA mà có thể:
- phân tích cú pháp chuỗi có mọi định dạng ngày ngày và trả lại đối tượng ngày để làm việc.
- trả lại đối tượng ngày trống, nếu chuỗi trống hoặc không đúng định dạng (để so sánh trong vòng lặp).
Edit:
Để sao chép các lỗi, chỉ cần chạy myDate = CDate("24.01.2009")
Theo trang web này [http://www.example-code.com /vb/stringtodate.asp] bạn đã làm đúng ... Có lỗi gì? Trên hàng nào - hàng đầu tiên hoặc dòng thứ hai (chuỗi trống)? Bạn đã thử thay đổi định dạng chuỗi chưa? Bạn có thể muốn thay đổi định dạng về cách bạn phân tích cú pháp chuỗi ngày của mình ở đó. "24.01.2009" có thể không được công nhận nhưng "12/24/2009" có thể - cố gắng chỉ chuyển đổi ngày 24 tháng 12 năm 2009 và xem nó có hoạt động hay không. Nếu nó hoạt động, định dạng 24.01.2009 có thể không được chấp nhận. –
Thử chuyển đổi ngày 24/12/2009 để xem nó có hoạt động hay không. Nếu nó hoạt động, thì định dạng dd.MM.yyyy có thể không thể truy cập được đối với CDate. Có thể có một cách để bạn chỉ định cách nó được định dạng sao cho nó có thể phân tích chính xác theo cách bạn muốn. Nếu định dạng dd.MM.yyyy là nguyên nhân gây ra sự cố, hãy thay đổi định dạng trước tiên như thay thế "." bằng dấu "/" và thử chuyển đổi lại. Hoặc định dạng nó sao cho nó trở thành MM/dd/yyyy và sau đó chuyển đổi nó. Tôi đoán tôi chỉ muốn biết nếu "12/24/2009" sẽ lỗi hay không. Kiểm tra trước và cho tôi biết. –
@AnnB., Câu hỏi đầu tiên của tôi là; Có một chức năng VBA mà có thể phân tích chuỗi với định dạng ngày * bất kỳ * và trả về một đối tượng ngày để làm việc với? –