Hỏi : Tạo một Workbook mới bằng VBA (4 người xem)

Liên hệ QC

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

Ông này chẳng hiểu gì cả... Ông thêm thử 100 sheet và đổi tên thành TUAN001, TUAN002... cho đến TUAN100 xem thử nó "nhanh như chớp" đến mức nào?
ANH TUẤN
 
à! như thế hã mình hỏi rồi
 
Các bạn thử đoạn code này xem sao:
Sub themsheet()
Static i As Integer
On Error GoTo Loi
Worksheets.Add
i = i + 1
ActiveSheet.Name = "Tuan" & Right("00" & i, 2)
Exit Sub
Loi:
Application.DisplayAlerts = False
ActiveSheet.Delete
End Sub
 
Dear Mr Hiếu.
Code của Anh chạy ổn khi file đang mở, chỉ cần chạy macro 1 lần rùi nhấn F4 là sẽ tạo được nhiều sheet, nhưng khi đóng file lại và mở lại để hcạy code thì bị báo lỗi ở đây nè: ActiveSheet.Name = "Tuan" & Right("00" & i, 2).
Bác xem lại nhen.

Dear Voda. Nếu muốn hiện bảng cho chọn số sheet cần thêm thì chỉnh code sao nhỉ????. Tất nhiên vẩn phải tuân thủ sheet thêm được đặt tên tăng dần như code của bạn.

TC.
 
Thien đã viết:
Dear Mr Hiếu.
Code của Anh chạy ổn khi file đang mở, chỉ cần chạy macro 1 lần rùi nhấn F4 là sẽ tạo được nhiều sheet, nhưng khi đóng file lại và mở lại để hcạy code thì bị báo lỗi ở đây nè: ActiveSheet.Name = "Tuan" & Right("00" & i, 2).
Bác xem lại nhen.

Dear Voda. Nếu muốn hiện bảng cho chọn số sheet cần thêm thì chỉnh code sao nhỉ????. Tất nhiên vẩn phải tuân thủ sheet thêm được đặt tên tăng dần như code của bạn.

TC.

Oái !!!!
File này không phải đưa lên làm VD tạo sheet mới, mà đưa lên VD nhằm cho thấy rằng nếu chỉ có code như thế thì File sẽ bị lỗi.
Nhu vậy là đúng ý mình rồi đấy.

Thân!
 
Nguyên văn bởi Thien
Dear Voda. Nếu muốn hiện bảng cho chọn số sheet cần thêm thì chỉnh code sao nhỉ????. Tất nhiên vẩn phải tuân thủ sheet thêm được đặt tên tăng dần như code của bạn.
Theo mình, chỉnh code như sau:
Sub themsheet()
Dim i, j, k, t As Integer
Do Until j = Sheets.Count
j = j + 1
For i = 1 To Sheets.Count
If Sheets(i).Name = "Tuan" & Right("00" & j, 2) Then k = k + 1
Next i
Loop
sosheet = InputBox("Ban muon tao bao nhieu Sheet?", "THONG BAO")
For t = 1 To sosheet
Worksheets.Add
ActiveSheet.Move after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Tuan" & Right("00" & k + 1, 2)
k = k + 1
Next
End Sub
 
Vẫn chưa ỗn... giả sử tôi đang có sẳn 4 sheet: Sheet1, Tuan01, Tuan02 và Tuan04... Chạy Macro và gõ vào số 2, sẽ báo lỗi ngay...
Làm sao tránh dc đây?
ANH TUẤN
 
Nguyên văn bởi anhtuan1066
Vẫn chưa ỗn...
Bạn test dùm mình xem thử ổn chưa?
Mã:
Sub themsheet()
Dim i, j, k, t As Integer
Do Until j = Sheets.Count
j = j + 1
For i = 1 To Sheets.Count
If Sheets(i).Name = "Tuan" & Right("00" & j, 2) Then k = k + 1
Next i
Loop
sosheet = InputBox("Ban muon them bao nhieu sheet?", "THONG BAO")
Application.ScreenUpdating = False
TryAgain:
On Error GoTo loi
For t = 1 To sosheet
Worksheets.Add
ActiveSheet.Move after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Tuan" & Right("00" & k + 1, 2)
k = k + 1
Next
Exit Sub
loi:
Application.DisplayAlerts = False
ActiveSheet.Delete
k = k + 1
Resume TryAgain
Application.ScreenUpdating = True
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
voda đã viết:
Bạn test dùm mình xem thử ổn chưa?

Có thể rút gọn được hơn không bác, em cảm thấy có thể đấy (tuy nhiên chưa thử), vì mấy cái code trên đã có như vậy rồi.
Bác giúp nhé.

Thân!
 
Gần như là ổn cả... Tôi nghĩ chỉ cần bẩy thêm 2 lỗi nữa, đó là: Lở như thằng điên nào cắc cớ ko nhập number vào mà nhập Text thì sao? Vả còn nữa, lở như thằng đó nó nhập số 1.000.000 hoặc 1 số nào đó lớn hơn mức cho phép thì... hi... hi...
Tôi nhập thử 1000 thì... treo máy.. nhập text vào thì báo lỗi...
Vậy đấy... có 1 tí thôi nhưng phải tốn rất nhiều công sức... Bạn nghiên cứu tiếp xem
Mến
ANH TUẤN
 
-Với Mr Okebab: Mình chưa nghĩ ra cách gì để rút gọn đoạn code trên. Bạn có thể gợi ý cho mình được không?
-Với anhtuan1066: Cám ơn những phát hiện của bạn. Đúng là không dễ viết code. Đi sâu vào những điều đơn giản, lại gặp những điều không đơn giản chút nào.
-Với trường hợp trên có thể thêm:
If IsNumeric(sosheet) = False Or sosheet > 60 Then
MsgBox "So nhap khong hop le - Chuong trinh tam dung"
Exit Sub
End If
 
OK... tạm thời là ỗn... tôi chưa tìm ra dc lỗi nào khác... Nếu có thì từ từ mình sửa tiếp... cám ơn bạn đã nhiệt tình
ANH TUẤN
 
anhtuan1066 đã viết:
Gần như là ổn cả... Tôi nghĩ chỉ cần bẩy thêm 2 lỗi nữa, đó là: Lở như thằng điên nào cắc cớ ko nhập number vào mà nhập Text thì sao? Vả còn nữa, lở như thằng đó nó nhập số 1.000.000 hoặc 1 số nào đó lớn hơn mức cho phép thì... hi... hi...
Tôi nhập thử 1000 thì... treo máy.. nhập text vào thì báo lỗi...
Vậy đấy... có 1 tí thôi nhưng phải tốn rất nhiều công sức... Bạn nghiên cứu tiếp xem
Mến
ANH TUẤN

Bác hơi nhiều chuyện đó nhen. thằng điên mới thêm 1.000.000 sheet để làm gì hả???. Cũng nhờ Bác mà Bác Voda hay "võ đá" gì đó mới cải tiến code chạy trơn tru.
He He đừng giận nhen. Nếu có thì cùng cụng vài chai là xong mà.

TC.


P/S: Cảm ơn Voda đã nhiệt tình giải đáp.
 
Là bác Vợ đá... nghĩa là bị vợ đá, ko có nhà nên lúc nào cũng rảnh rổi lên mạng dạy anh em học hỏi... Cám ơn bà vợ này! hi.. hi...
 
Các bác chỉ đoán mò thôi. Muốn biết, các bác cứ về nhà, nhờ bà xã đá giùm mấy cái, xem thử còn hơi sức mà lên đây không?!
 
Tôi đang mong dc.." đá" mà hổng có dc đây nè... Bác dc thế là phước như tiên rồi... còn than vản nỗi gì chứ... hi... hi...
Đễ tôi cố gắng nắm bắt dc suy nghĩ của mấy "thằng khùng" rồi "dịch" lại cho bác biết đễ bác có việc làm thêm với mấy cái code này nhé!
 
Web KT

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

Back
Top Bottom