Cách khắc phục lỗi 'Cannot shift objects off sheet' trong Excel

intermediate📊 Microsoft Excel2026-05-12| Microsoft Excel (Microsoft 365, Excel 2013–2021) trên Windows và macOS.

Error Message

Cannot shift objects off sheet
#excel#sua-loi-bang-tinh#doi-tuong-excel#vba#khac-phuc-su-co

Tại sao Excel ngăn bạn chèn thêm hàng và cột

Nó xảy ra chỉ trong tích tắc. Bạn đang sắp xếp một tập dữ liệu lớn, bạn cố gắng chèn một hàng mới và Excel ngăn bạn bằng một thông báo cộc lốc: Cannot shift objects off sheet. Ngay cả khi các ô ở tận cùng bảng tính của bạn trông có vẻ trống rỗng, Excel vẫn hành xử như thể nó vừa va phải một bức tường thực sự.

Lỗi này xảy ra do các giới hạn cứng của Excel. Một bảng tính tiêu chuẩn có chính xác 1.048.576 hàng và 16.384 cột (kết thúc tại XFD). Nếu một đối tượng — như một hộp văn bản đi lạc, một hình khối hoặc một nhận xét nhỏ — đang nằm gần các ranh giới đó, việc chèn thêm một hàng mới sẽ đẩy đối tượng đó ra ngoài lưới. Để ngăn bạn làm mất phần tử đó, Excel chỉ đơn giản là dừng hành động lại.

Những "thủ phạm" thường gặp

Vấn đề hiếm khi liên quan đến dữ liệu thực tế của bạn. Thay vào đó, siêu dữ liệu (metadata) vô hình thường là nguyên nhân. Hãy chú ý đến những lỗi phổ biến sau:

  • Nhận xét kiểu cũ (Legacy Comments): Các phiên bản Excel cũ coi nhận xét là các hình khối trôi nổi có thể trôi dạt xa khỏi ô gốc của chúng.
  • Đối tượng có kích thước bằng 0: Khi bạn xóa các hàng, một số đối tượng bị nén lại thành chiều cao hoặc chiều rộng bằng 0. Chúng vô hình, nhưng Excel vẫn theo dõi vị trí của chúng.
  • Các điều khiển biểu mẫu (Form Controls): Các nút bấm hoặc hộp kiểm từ một mẫu (template) vô tình di chuyển đến hàng thứ 1.000.000.
  • Dữ liệu rác từ Web: Việc sao chép-dán từ trình duyệt thường mang theo các đoạn HTML nhỏ, vô hình.

Giải pháp 1: Xóa các hàng và cột "ma"

Buộc Excel nhận ra rằng phần cuối trang tính của bạn đang trống. Phương pháp này sẽ xóa bỏ các định dạng thừa và các đối tượng bị kẹt trong "khoảng không" bên ngoài dữ liệu của bạn.

  • Tìm hàng cuối cùng chứa dữ liệu thực tế của bạn.
  • Nhấp vào số hàng ngay bên dưới nó để chọn toàn bộ hàng.
  • Nhấn Ctrl + Shift + Down Arrow. Thao tác này sẽ chọn mọi hàng xuống cho đến giới hạn 1.048.576.
  • Nhấp chuột phải vào tiêu đề hàng và chọn Delete.
  • Lặp lại cho các cột: Chọn cột trống đầu tiên ở bên phải, nhấn Ctrl + Shift + Right Arrow, và Delete.

Lưu tệp (workbook) của bạn ngay lập tức. Lưu là một bước quan trọng; nó buộc Excel tính toán lại "Phạm vi đã sử dụng" (Used Range) và nhận ra khoảng trống vừa được giải phóng.

Giải pháp 2: Tìm kiếm các đối tượng ẩn bằng 'Go To Special'

Nếu lỗi vẫn còn, một đối tượng có thể đã được neo giữ theo cách mà lệnh xóa không loại bỏ được. Hãy sử dụng công cụ tìm kiếm tích hợp của Excel để tìm nó.

  • Nhấn F5 (hoặc Ctrl + G) để mở hộp thoại Go To.
  • Nhấp vào Special... ở góc dưới bên trái.
  • Chọn Objects và nhấn OK.

Bây giờ Excel sẽ làm nổi bật mọi đối tượng trên trang tính. Hãy tìm các điểm chọn nhỏ (vòng tròn nhỏ) ở các vùng trống. Nếu bạn tìm thấy thứ gì đó không nhận ra, hãy nhấn Delete. Nếu đó là biểu đồ hoặc hình ảnh bạn cần, hãy kéo nó trở lại vùng dữ liệu chính của bạn.

Giải pháp 3: Cập nhật thuộc tính vị trí của đối tượng

Đôi khi bạn muốn giữ lại các đối tượng, nhưng cài đặt của chúng quá cứng nhắc. Bạn cần cho Excel biết rằng việc di chuyển hoặc thay đổi kích thước của chúng khi lưới thay đổi là ổn.

  • Chọn tất cả các đối tượng bằng phương pháp Go To Special từ Giải pháp 2.
  • Nhấp chuột phải vào bất kỳ đối tượng nào đang được chọn và chọn Format Object.
  • Chuyển đến tab Properties.
  • Chọn Move and size with cells.

Lưu ý: nếu tùy chọn này bị xám, trang tính của bạn có thể đang được bảo vệ. Hãy bỏ bảo vệ trang tính trong tab Review trước khi thử lại.

Giải pháp 4: Sửa lỗi tự động bằng VBA

Nếu bạn đang xử lý hàng chục trang tính, việc săn tìm các điểm ảnh vô hình là một sự lãng phí thời gian. Một đoạn mã ngắn có thể đặt lại mọi đối tượng trên trang tính hiện tại của bạn ngay lập tức. Đây là cách đáng tin cậy nhất để xử lý các tệp cứng đầu.

Sub ResetAllObjects()
    Dim shp As Shape
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    On Error Resume Next
    For Each shp In ws.Shapes
        ' Buộc các đối tượng di chuyển và thay đổi kích thước theo lưới
        shp.Placement = 1 ' xlMoveAndSize
    Next shp
    
    MsgBox "Đã đặt lại thành công tất cả các đối tượng trên " & ws.Name, vbInformation
End Sub

Để sử dụng mã này, nhấn Alt + F11, vào Insert > Module, dán mã vào và nhấn F5 để chạy.

Cách kiểm tra kết quả

Đừng vội kết luận lỗi đã được khắc phục cho đến khi bạn kiểm tra. Đầu tiên, hãy thử chèn lại hàng hoặc cột. Tiếp theo, nhấn Ctrl + End. Phím tắt này sẽ đưa bạn đến ô cuối cùng chứa dữ liệu của bạn. Nếu nó nhảy đến một ô ở hàng hàng triệu, bạn vẫn còn các đối tượng hoặc định dạng thừa ở rìa trang tính.

Lời khuyên chuyên nghiệp để phòng ngừa

Hãy giữ cho tệp của bạn gọn nhẹ. Tránh kéo các hình khối hoặc nhận xét ra xa khỏi dữ liệu của bạn. Nếu bạn thường xuyên nhập dữ liệu từ các cơ sở dữ liệu bên ngoài, những tệp đó thường mang theo các đối tượng ẩn. Hãy làm sạch chúng ngay sau khi nhập.

Khi cung cấp các tệp đã sửa cho khách hàng, việc chứng minh tệp không bị can thiệp bất hợp pháp là điều chuyên nghiệp. Tôi sử dụng Hash Generator trên ToolCraft để tạo dấu vân tay kỹ thuật số (như mã băm MD5). Điều này đảm bảo tệp khách hàng mở chính là phiên bản chính xác, không bị lỗi mà bạn đã gửi, cung cấp thêm một lớp bảo mật cho việc bàn giao kỹ thuật.

Related Error Notes