Excel VBA Lỗi chức năng đúng


0

Tôi đang cố gắng tự động cập nhật phạm vi ngày trên đầu báo cáo của mình trong Excel dựa trên phạm vi ngày từ dữ liệu tôi tải xuống từ cơ sở dữ liệu văn bản. Trong macro được liệt kê bên dưới, tôi gặp lỗi Thời gian chạy '13': Nhập không khớp PEndDt = Right(PaidDateRange, 8).

Tôi nghĩ biến ngày, PEndDt, không thích nhận Chuỗi. Nhưng tôi đã gán các chuỗi cho các biến ngày trong các macro khác! Bây giờ tôi không biết cách khắc phục điều này. Xin hãy giúp đỡ.

Sub test()

Dim PEndDt As Date
Dim PaidDateRange As String

PaidDateRange = "PAID DATE  1/01/13 -  9/31/13"
PEndDt = Right(PaidDateRange, 8)
Range("A1") = "Report thru " & Format(PEndDt, "Long Date")

End Sub

Câu trả lời:


2

Vấn đề là trong chuỗi.

31/9/13 không phải là ngày hợp lệ.

31/9/2013 cũng không phải là ngày hợp lệ.


+1 Bắt tốt, tôi đã cập nhật bài đăng của mình để phân tích chuỗi và sử dụng DateSerial ()
Portland Runner

Cảm ơn bạn! Đôi khi tôi bị cuốn vào mã đến nỗi tôi bỏ lỡ những điều đơn giản như thực tế là không có 31 ngày vào tháng Chín. Macro của tôi bây giờ hoạt động.
irockyoursocks

1

Bạn sẽ phải phân tích chuỗi thành định dạng tháng, ngày, năm

Dim itemDate as String
itemDate = Right(PaidDateRange, 8)

PEndDt = DateSerial(Right(itemDate, 2), Left(itemDate, 2), Mid(itemDate, 4, 2))

Nếu bạn chỉ đặt nó trở lại thành một chuỗi tại sao chuyển đổi thành ngày?

Range("A1") = "Report thru " & Right(PaidDateRange, 8)

Tôi đã chọn chuyển đổi thành một biến loại ngày để không gian hàng đầu sẽ biến mất. Bởi vì tôi nhận được dữ liệu này từ cơ sở dữ liệu văn bản, có thể có một khoảng trắng ở phía trước ngày. Cách dễ nhất để xử lý không gian này là sử dụng biến định dạng Ngày. Nó biến "9/01/13" thành "9/1/2013" mà không cần thêm bất kỳ mã nào. Nó cũng cho phép "12/01/13" được phân tích cú pháp chính xác.
irockyoursocks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.