Lỗi khi chuyển qua name code

Liên hệ QC

le tin

Học mãi
Tham gia
22/10/07
Bài viết
722
Được thích
560
Chào các bạn
Nhờ các bạn giải thích giúp tôi đoạn code này trong file B2 , nếu tôi đổi Sheet1 thành sheets("D") thì bị lỗi :
Sub test()
Application.DisplayAlerts = False
With Workbooks.Open(ThisWorkbook.Path & "\B1.xls")
.Sheets("B").[A1:A100].Value = Sheet1.[A1:A100].Value
.Save
End With
End Sub

Cảm ơn
 

File đính kèm

  • Chuyen.rar
    12.4 KB · Đọc: 25
Chào các bạn
Nhờ các bạn giải thích giúp tôi đoạn code này trong file B2 , nếu tôi đổi Sheet1 thành sheets("D") thì bị lỗi :
Sub test()
Application.DisplayAlerts = False
With Workbooks.Open(ThisWorkbook.Path & "\B1.xls")
.Sheets("B").[A1:A100].Value = Sheet1.[A1:A100].Value
.Save
End With
End Sub

Cảm ơn
Theo mình thì có lẽ là VBE không hiểu Sheets("D") là của Workbook nào. Nếu bạn thay chỗ này là ThisWorkbook.Sheets("D") thì VBE hiểu Sheets("D") là của ThisWorkbook nên code chạy được.
 
Upvote 0
Mình thấy cách bạn viết như vậy không minh bạch các đối tượng nên sinh lỗi.
Minh tham gia Code viết như sau thì bạn vô tư vùng vẫy giữa 2 file:

Mã:
Sub test()
 Dim Ex1 As Workbook, Ex2 As Workbook
  Application.DisplayAlerts = False
   Set Ex1 = ThisWorkbook
    Set Ex2 = Workbooks.Open(ThisWorkbook.Path & "\B1.xls")
      Ex2.Sheets("B").[A1:A100].Value = Ex1.Sheets("D").[A1:A100].Value
     Ex2.Save
    Ex2.Close
   Set Ex1 = Nothing
  Set Ex2 = Nothing
End Sub
 
Upvote 0
Cảm ơn 2 bạn , nhưng tôi vẫn thắc mắc sao để sheet1 nó lại hiểu .
Trong trường hợp này nếu dùng sheet1 không có lỗi gì thì đổi làm gì để code dài thêm .
Vậy thì việc thay thế cho nhau không phải lúc nào cũng được . Và còn trường hợp nào nữa ...
 
Upvote 0
Cảm ơn 2 bạn , nhưng tôi vẫn thắc mắc sao để sheet1 nó lại hiểu .
Trong trường hợp này nếu dùng sheet1 không có lỗi gì thì đổi làm gì để code dài thêm .
Vậy thì việc thay thế cho nhau không phải lúc nào cũng được . Và còn trường hợp nào nữa ...
Có những thứ gọi là "ngầm hiểu" chỉ có bác Bill mới biết (hoặc ta tự thí nghiệm và suy luận)
Thôi thì cứ TƯỜNG MINH đi cho chắc ăn, nhất là khi làm việc trên nhiều Workbook khác nhau, ta phải chỉ rõ vùng nào thuộc sheet nào thuộc Workbook nào... như vậy bạn sẽ đở mất công thắc mắc và tìm hiểu những thứ không cần thiết ---> Cho dù bạn viết Sheet1 và nó đã hiểu đúng ý bạn, nhưng tôi vẫn cho rằng cách đấy rất phiêu lưu (ai biết được hôm nay bác Bill hiểu thế này còn ngày mai bác lại hiểu kiểu khác...)
 
Upvote 0
Web KT
Back
Top Bottom