Bộ sưu tập đầy đủ Excel 2013 dành cho Excel 2010
Trả lời:
Bạn đã gửi cho tôi một tập tin chứa phiên bản mã cũ hơn qua email.
Tôi đã thử vào năm 2013 và nó có hiệu quả, còn năm 2010 thì không.
Theo nguyên tắc chung, tốt nhất là nên phát triển ứng dụng trên phiên bản Office cũ nhất mà nó sẽ được sử dụng. Tôi đề nghị bạn tìm cách phát triển ứng dụng cho khách hàng này bằng Office 2010.
Việc đặt câu lệnh "On Error Resume Next" ở đầu mỗi quy trình sẽ khiến bạn không được thông báo về lỗi xảy ra. Loại bỏ câu lệnh đó sẽ giúp bạn phát hiện ra vấn đề là gì.
Bạn đã tuyên bố
Public x() As Range, y() As Range, z() As Range
Điều này khai báo x là một mảng các Range (mỗi Range có thể chứa bất kỳ số lượng ô nào).
Sau đó bạn làm
ReDim x(1 To r)
điều này thiết lập kích thước của mảng để cho phép chứa r phạm vi khác nhau trong mảng.
và sau đó
x = ActiveSheet.Range("A1:B" & CStr(r))
Điều này gây ra lỗi không khớp kiểu dữ liệu vì bạn không thể gán giá trị cho toàn bộ mảng.
Bạn có thể nói
Đặt x(1) = ActiveSheet.Range("A1:B" & CStr(r))
Nhưng đó không phải là điều bạn muốn.
Vì bạn không sử dụng y hoặc z sau này trong mã và bạn chỉ sử dụng x ở đó
ActiveChart.SetSourceData Source:=Range(x)
Tôi đề nghị loại bỏ x, y và z và chỉ thực hiện như sau:
ActiveChart.SetSourceData Source:=Range("A1:B"&CStr(r))
Điều đó sẽ giúp bạn tìm ra lý do thực sự tại sao nó không hiệu quả vào năm 2010.
ActiveSheet.Shapes.AddChart2(201, xlBar).Select
Báo lỗi - đối tượng không hỗ trợ thuộc tính hoặc phương thức này.
Đó là vì bạn đang cố gắng sử dụng loại biểu đồ chỉ mới được giới thiệu vào năm 2013.
Comments
Post a Comment