Giúp đỡ: Code bi lỗi khi ở Thisworkbook?

  • Thread starter Thread starter pmhoang
  • Ngày gửi Ngày gửi
Liên hệ QC

pmhoang

Thành viên thường trực
Tham gia
4/7/08
Bài viết
269
Được thích
83
Mình viết 1 code như sau: (ở dưới) Cho nó chạy mỗi khi mở file, Code hoạt động tốt ở Module, nhưng theo yêu cầu của bạn mình là phải không nhìn thấy Tên của code này khi người ta chọn Alt+F8, Mình đã dùng Private nhưng như thế thì Workbook_Open không nhìn thấy nó, chỉ có cách là đặt nó trong Thisworkbook, nhưng nghiệt 1 cái là khi copy Code vào Thisworkbook thì nó lại bị lỗi. Làm hoài mà không biết cách khắc phục
Mong anh em giúp mình khắc phục lỗi này với, cảm ơn nhiều.
PHP:
Sub CopytoNewBook()
  Application.DisplayAlerts = False
  Workbooks.Add
  Workbooks(Workbooks.Count - 1).Activate
  Sheets("Data").Activate
  Cells.Copy
  Workbooks(Workbooks.Count).Activate
  Range("A1").Select
  ActiveSheet.Paste 'cho nay khong bi loi
  Workbooks(Workbooks.Count - 1).Activate
  Sheets("Data").Activate
  Cells.Clear
  ActiveWorkbook.Save
  ActiveWorkbook.Close
  Application.DisplayAlerts = True
End Sub
 

File đính kèm

PHP:
Sub CopytoNewBook()
  Application.DisplayAlerts = False
  Workbooks.Add
  Workbooks(Workbooks.Count - 1).Activate
  Sheets("Data").Activate
  Cells.Copy
  Workbooks(Workbooks.Count).Activate

  Sheets("sheet can paste la gi").Activate

  Range("A1").Select
  ActiveSheet.Paste cho nay khong bi loi
  Workbooks(Workbooks.Count - 1).Activate
  Sheets("Data").Activate
  Cells.Clear
  ActiveWorkbook.Save
  ActiveWorkbook.Close
  Application.DisplayAlerts = True
End Sub
 
Upvote 0
Mình viết 1 code như sau: (ở dưới) Cho nó chạy mỗi khi mở file, Code hoạt động tốt ở Module, nhưng theo yêu cầu của bạn mình là phải không nhìn thấy Tên của code này khi người ta chọn Alt+F8, Mình đã dùng Private nhưng như thế thì Workbook_Open không nhìn thấy nó, chỉ có cách là đặt nó trong Thisworkbook, nhưng nghiệt 1 cái là khi copy Code vào Thisworkbook thì nó lại bị lỗi. Làm hoài mà không biết cách khắc phục
Mong anh em giúp mình khắc phục lỗi này với, cảm ơn nhiều.
PHP:
Sub CopytoNewBook()
  Application.DisplayAlerts = False
  Workbooks.Add
  Workbooks(Workbooks.Count - 1).Activate
  Sheets("Data").Activate
  Cells.Copy
  Workbooks(Workbooks.Count).Activate
  Range("A1").Select
  ActiveSheet.Paste 'cho nay khong bi loi
  Workbooks(Workbooks.Count - 1).Activate
  Sheets("Data").Activate
  Cells.Clear
  ActiveWorkbook.Save
  ActiveWorkbook.Close
  Application.DisplayAlerts = True
End Sub
Sao mà Activate rồi Select tùm lum thế kia nhỉ?
Sao không là:
PHP:
Private Sub Workbook_Open()
  Application.ScreenUpdating = False
  Workbooks.Add
  With ThisWorkbook
    .Sheets("Data").Cells.Copy
    ActiveWorkbook.ActiveSheet.Paste
    .Sheets("Data").Cells.Clear
    .Close (True)
  End With
  Application.ScreenUpdating = True
End Sub
 
Upvote 0
PHP:
Sub CopytoNewBook()
  Application.DisplayAlerts = False
  Workbooks.Add
  Workbooks(Workbooks.Count - 1).Activate
  Sheets("Data").Activate
  Cells.Copy
  Workbooks(Workbooks.Count).Activate

  Sheets("sheet can paste la gi").Activate

  Range("A1").Select
  ActiveSheet.Paste cho nay khong bi loi
  Workbooks(Workbooks.Count - 1).Activate
  Sheets("Data").Activate
  Cells.Clear
  ActiveWorkbook.Save
  ActiveWorkbook.Close
  Application.DisplayAlerts = True
End Sub
Sheets cần paste là Sheets mới, được tạo ra bởi Book mới, từ dòng lệnh Workbooks.Add (Theo mặc định Sheets Activata của New Book là Sheet 1 - mình để nguyên mặc định nên không ghi giòng sheets(...).Activate
Bạn phát hiện ra điêu đó cũng là rất hay đó. Cảm ơn bạn
Thân chào.
 
Upvote 0
Sao mà Activate rồi Select tùm lum thế kia nhỉ?
Sao không là:
PHP:
Private Sub Workbook_Open()
  Application.ScreenUpdating = False
  Workbooks.Add
  With ThisWorkbook
    .Sheets("Data").Cells.Copy
    ActiveWorkbook.ActiveSheet.Paste
    .Sheets("Data").Cells.Clear
    .Close (True)
  End With
  Application.ScreenUpdating = True
End Sub
Goog quá. Mình đã làm được rồi cảm ơn bạn rất nhiều.
 
Upvote 0
Goog quá. Mình đã làm được rồi cảm ơn bạn rất nhiều.
Thông thường khi ta dùng Record macro để hổ trợ viết code, ta sẽ thu được đoạn code với tùm lum các thứ như: Active, Activate, Select, Selection.. vân vân... Để tối ưu bạn phải tìm cách bỏ nó đi, nếu không thì chỉ tổ làm cho màn hình cả giật mà code lại dài dòng (chưa nói đến việc tối ưu code có thể tăng tốc độ)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom