Rắc rối khi thêm sheet (1 người xem)

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

Người dùng đang xem chủ đề này

voda

Thành viên tiêu biểu
Thành viên danh dự
Tham gia
27/3/07
Bài viết
687
Được thích
1,028
Chào các bạn.
Làm việc với chức năng Insert worksheet trong excel, tôi gặp trường hợp sau đây:
-Khi ta xoá sheet đi, sau đó lại thêm sheet vào, tên của sheet không như ý ta mong muốn. Ví dụ: 1 workbook có 3 sheet với tên mặc định :sheet 1,
sheet 2, sheet 3. Khi ta xoá sheet 2, sheet 3 đi. Sau đó ta thêm vào 1 sheet mới. Sheet thêm vào lại có tên là sheet 4 ( đáng ra phải là sheet 2). Hiện tượng này được khắc phục khi ta đóng, lưu file. Xin hỏi các bạn:
1. Vì sao có hiện tượng đó?
2.Cách khắc phục nó? (Tất nhiên là không cần phải đóng và lưu file.)
Xin cám ơn nhiều.
 
Theo tôi: trong Excel mặc định để tên là Sheet 1, Sheet 2....do vậy khi bạn chèn, hoặc xóa thì nó báo cho bạn biết là bạn đã chèn (Insert) và xóa (Delete) mấy Sheet để bạn biết các thao tác của mình có nên giữ lại hay bỏ đi sau khi đóng tài liệu . Giống như trước khi đóng tài liệu nó hỏi lại: Bạn có muốn lưu lại những sửa đổi bạn đã làm trong tài liệu...? (Do you want to save the changes you made to ...) Nếu chắc chắn thì OK. Nếu còn nghi ngờ mà muốn giữ bản cũ thì NO. Chứng tỏ bác Bill cẩn thận quá nhỉ! (Tôi bị trường hợp này kể thêm: Dạo đó mới dùng máy, quen cái câu trên, nên cứ bấm Yes. Ai ngờ một lần dính Virus nó hỏi "Do you want to Revert....?" bấm Yes thế là công toi.
 
Đề tránh macro làm thay đỗi dữ liệu trong sheet có trùng tên.

Thí dụ bạn có 1 code macro1 trong đó có những mệnh lệnh gọi/thay đồi sheet2. Khi xoá sheet2 và chèn vào 1 sheet mới có trùng tên và nhập data vào sheet nầy rồi chạy macro1. Hậu quả sau khi chạy macro thì không thề ngờ trước được và XL không cho bạn tháo gở (undo) nhửng thay đồi sau đó.

Nếu bạn muốn có 1 sheet mới theo thứ tự như ý muốn (và dĩ nhiên chấp nhận rủi ro) thì: 1/ sau khi xoá sheet xong save changes, 2/ đóng XL, 3/ khới động XL lại, 4/ mở file bạn vừa save rồi insert new sheet.

Mến.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Cám ơn các bạn đã góp ý cho mình.
Khó khăn cụ thể của mình là ở cái code chia phòng thi. Lúc đầu chia 8 phòng chẳng hạn. Sau đó, chia lại 6 phòng. Nếu không đóng, lưu file trước khi chia lại thì bị báo lỗi. Mình muốn giải quyết vấn đề bằng 1 cách nào đó chứ không dùng bẫy lỗi hoặc đóng, lưu file. Nhờ các bạn giúp đỡ.
Sub Chiaphong()
Dim tt, l As String
Dim t, s, ss As Integer
t = Cells(5, 3) + 6
l = Left(Cells(7, 5), 2)
tt = MsgBox("Ban co muon chia phong thi phai khong? ", vbQuestion + vbYesNo, "Thong bao")
If tt = vbNo Then
Range("A7").Select
End
End If
Application.ScreenUpdating = 0
s = Sheets.Count
For ss = 1 To s - 1
Sheets("Phong " & ss).Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Next ss
'Tao file moi
'khai bao va tinh toan so lieu
Dim tongsophong As Integer
tongsophong = InputBox("Ban muon chia thanh bao nhieu phong?", "Thong bao")
'tao cac sheet va xep thu tu
For sttphong = 1 To tongsophong
Sheets("Sheet" & sttphong).Select
Sheets.Add
Sheets("Sheet" & (sttphong + 1)).Select
Sheets("Sheet" & (sttphong + 1)).Move After:=Sheets(sttphong + 1)
Next sttphong
'dat ten sheet
For sttphong = 1 To tongsophong
Sheets("Sheet" & sttphong + 1).Name = "Phong " & sttphong
Next sttphong
Sheet1.Activate
MsgBox (" Chia phong da hoan tat. ")
End Sub
 
Bạn có thể up lên cái file mẩu để tôi xem. Không cần có tên danh sách học sinh.

Mến
 
Mình gởi file mẫu nhờ các bạn xem dùm.
 

File đính kèm

Chào bạn Voda,

Thì ra bạn đang lập bảng chia lớp thi. Trước hết về câu hỏi của bạn khi tạo các bảng dang sách chia lớp thì nên dùng mệnh lệnh Workbooks.Add để cái bảng chính của bạn không bị thay đổi. Sau nầy nếu phải chia phòng lại thì chỉ việc chạy macro lại để có 1 cái workbook mới.

Bạn nên vô cái link sau để thao khảo thêm code của anh Pham Duy Long về việc chia danh sách phòng thi. Bạn nên dùng code đó & thay đổi nếu cần.

http://www.giaiphapexcel.com/forum/showthread.php?t=2228
post # 9

Chúc bạn thành công.
 
-Cám ơn digita đã giúp mình. Việc tạo phòng thi trên file mới ( dùng lệnh Workbooks.add) sẽ không gặp rắc rối khi chia như trường hợp của mình nhưng lại có những phiền hà khác. Nên mình chọn cách này. Vấn đề là có cách nào khắc phục không? Trước khi chọn cách làm khác.
-Mong bạn hiểu cho ý của mình.
 
Chào voda,

Bạn xem file này có đúng ý chưa nha!

Good luck,

TP.
 

File đính kèm

Cám ơn ttphong 2007. Cái code của bạn gọn mà hiệu quả rất cao. Tại sao mình lại viết 2 vòng lặp giống nhau mà không biết gộp nó lại nhỉ? Bạn đã chỉ cho mình một bài học thật bổ ích.
Mình cũng xin cảm ơn tất cả các bạn.
 
có ai biết la,f thế nào để tạo 1 sheet ở cuối hok?ví dụ tôi coá 10 sheet roài, mún tạo thêm sheet thứ 11 và đứng ở cuối thi làm thía nào?
 
có ai biết la,f thế nào để tạo 1 sheet ở cuối hok?ví dụ tôi coá 10 sheet roài, mún tạo thêm sheet thứ 11 và đứng ở cuối thi làm thía nào?
' bạn thử ghi lại quá trình bằng recod macro xem sao
Sub Macro1()
Sheets.Add After:=Sheets(Sheets.Count)
End Sub
 
Web KT

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

Back
Top Bottom