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

Liên hệ QC

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

cokhimocaybt

Thành viên mới
Tham gia
8/11/06
Bài viết
26
Được thích
2
Xin hỏi có cách nào để thực hiện bằng lệnh VBA mà tạo một WorkBook mới hay không ( giống như trong trình đơn chọn File -> New)
làm ơn cho ví dụ cụ thể.
Cám ơn nhiều !!!
 
cokhimocaybt đã viết:
Xin hỏi có cách nào để thực hiện bằng lệnh VBA mà tạo một WorkBook mới hay không ( giống như trong trình đơn chọn File -> New)
làm ơn cho ví dụ cụ thể.
Bạn có thể tự làm ví dụ cho mình bằng cách vào:
1/ Tools/Macro/Record New Macro khi đó bộ Record đã bật thì...
2/ File -> New rồi nhấn "Stop Record" đi, sau đó Alt+F11 để xem bạn được gì nào.
Cách học ban đầu của tớ là thế, sau đó thêm sự yêu thích, đam mê là có đủ thứ để bạn tìm tòi.
 
Trời mấy cái này dùng VBA làm gì vậy. cứ dùng phím tắt cho nó nhanh, lại đỡ nặng máy
 
Muốn dùng VBA thì bạn cứ Record Macro lại rồi vào VBA xem code và từ đó chỉnh sửa lại đôi chút cho như ý. (Mình vẫn thường làm vậy để học VBA)

TDN
 
Hi... hi... đúng rồi, trừ những trường hợp bất khả kháng thì ta mới tự tay viết macro, chứ cái này đơn giản, sau khi record xong thì sẽ thấy code nó như thế này đây:
Sub Macro1()
Workbooks.Add
End Sub

ANH TUẤN
 
trandangkhoi đã viết:
Trời mấy cái này dùng VBA làm gì vậy. cứ dùng phím tắt cho nó nhanh, lại đỡ nặng máy
Thật ra, dù biết rằng có vài trường hợp không nhất thiết không cần thiết dùng VBA, nhưng khi mới bắt đầu khám phá nó thì đụng đến bất kỳ thứ gì bạn sẽ dùng đến nó, vì bạn đang tò mò mà.
Nhưng theo em đó cũng là cách tốt để tiếp cận VBA và sẽ là điểm xuất phát cho một ý tưởng(úi, bị nhiễm câu nói của Bác OkeBab roài:-= ). Tại sao không nhỉ.
Và em thì cũng không ngọai lệ.--=0
Đây là thiển ý của cá nhân em.--=0
 
Lần chỉnh sửa cuối:
Với macro trên lý ra người mới học sẽ đặt ra ngay 1 câu hỏi: Add worksheet thì sẽ thay đỗi code thế nào?
Tôi sẽ theo phương pháp suy luận mà đổi Workbooks.Add thành Worksheets.Add ... thử lại thì chính xác...
Tiếp theo sẽ thêm câu hỏi nửa: Giờ làm sao add worksheet và đặt tên cho nó luôn... Tôi tưởng tượng ra nó sẽ như thế này:
Worksheets.ADD
ActiveSheet.Name = "Tuan"
Đây đặt tên là "Tuan"
Thêm câu hỏi phức tạp hơn: Tôi bấm vào nút lệnh thì nó Add 1 sheet tên TUAN01, bấm tiếp thì Add sheet TUAN02.. vân vân... và cứ theo trình tự đó...
Vậy các cao thử nghĩ xem sẽ làm thế nào?
Mến
ANH TUẤN
 
Ban đầu em nghĩ nên làm theo đoạn code này
Mã:
Sub themsheet()
Dim Duoc As Boolean
Worksheets.ADD
On error goto datten
datten:
i = i + 1
ActiveSheet.Name = "Tuan" & right("00" & i,2)
End Sub
Nhưng thấy không được nên sửa lại như sau:
Mã:
Sub themsheet()
Dim Duoc As Boolean
    Worksheets.Add
    Do
        j = j + 1
        Duoc = True
        For i = 1 To Sheets.Count
            If Sheets(i).Name = "Tuan" & Right("00" & j, 2) Then Duoc = False
            Exit For
        Next i
    Loop Until Duoc
    ActiveSheet.Name = "Tuan" & Right("00" & j, 2)
End Sub

Có bác nào tư vấn hộ em làm sao để đoạn code 1 chạy được không ạh. Em thấy đoạn đó hay.
 
Có lý... tôi cũng nghĩ sẽ làm bằng 1 vòng lập nào đó, có điều là ko nghĩ ra... Cám ơn Bình... Cái này cho các bạn mới học tự phát triển là hay nhất...
Mến
ANH TUẤN
 
Ko ỗn Bình ơi! Code báo lỗi... Bình sửa thế nào đây?
 
Code 2 thì chắc chắn được, còn code 1 thì như em nói, em nhờ các cao thủ tư vấn hộ làm thế nào để chạy được.

Nếu bác bị lỗi code 2 bác có thể cho biết dòng nào không ? và lỗi gì??
 
Báo lổi ngay dòng:
ActiveSheet.Name = "Tuan" & Right("00" & J, 2)
Và lỗi này chĩ xuất hiện khi chèn thêm sheet thứ 3 (sheet TUAN01 và TUAN02 ko có vấn đề)
ANH TUẤN
 
Các bạn xem đoạn code này có được không?
Sub themsheet()
Worksheets.Add
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
ActiveSheet.Name = "Tuan" & Right("00" & k + 1, 2)
End Sub
 
Tốt đấy! Tôi thêm 1 code nữa là:
Sheet1.select (hay là sheet nào đó bắt đầu)... Vì nếu tạo 1 nút lệnh từ đây thì mỗi khi bấm vào nó add thêm sheet thì mình lại mất công chuyển qua sheet đầu tiên!
Cám ơn Voda! Có cảm giác như bạn chưa từng thất thủ thì phải! Rất tuyệt! Biết bao giờ tôi mới dc như thế nhỉ? Hic...
ANH TUẤN
 
Đây cũng là 1 trường hợp cụ thể cần phải xem xét... Chúng ta phát triển từ những ý tưởng đơn giản nhất, với ý đồ cho những bạn mới học tiện việc hiểu dc từng bước 1... Cái vụ kiểm tra SHEET CÓ TỒN TẠI HAY KO hình như có nói rồi thì phải... Chỉ việc thêm code vào là xong... vậy thử nghĩ xem còn vấn đề nào khác nữa có thễ gây lỗi ko?
Ah.. tôi vừa kiểm tra rất kỹ, hình như code của bạn Voda ko hề gây ra lỗi nào cả, kể cả trường hợp Sheet mang tên Tuan01 đã tồn tại trước đó.. Hay nhỉ?
Mến
ANH TUẤN
 
Lần chỉnh sửa cuối:
Mình nghĩ vấn đề ở đây là làm sao cho code 1 của bạn OverAC chạy được. Có nghĩa là không dùng vòng lặp. Còn nếu dùng thì ta sang code 2 mất rồi. Đoạn code của mình mới động đậy thôi. Nhờ các bạn bổ sung thêm.
 
anhtuan1066 đã viết:
Đây cũng là 1 trường hợp cụ thể cần phải xem xét... Chúng ta phát triển từ những ý tưởng đơn giản nhất, với ý đồ cho những bạn mới học tiện việc hiểu dc từng bước 1... Cái vụ kiểm tra SHEET CÓ TỒN TẠI HAY KO hình như có nói rồi thì phải... Chỉ việc thêm code vào là xong... vậy thử nghĩ xem còn vấn đề nào khác nữa có thễ gây lỗi ko?
Ah.. tôi vừa kiểm tra rất kỹ, hình như code của bạn Voda ko hề gây ra lỗi nào cả, kể cả trường hợp Sheet mang tên Tuan01 đã tồn tại trước đó.. Hay nhỉ?
Mến
ANH TUẤN

Em lại thấy vẫn có lỗi mà.
Do tham số i được khai báo theo Static - Mỗi lần code chạy thì sẽ tăng thêm 1 đơn vị (so với lần trước đó), nếu gặp sheet trùng thì sẽ báo lỗi ngay

Bác xem nhé :

Thân!
 

File đính kèm

cần gì mà làm như thế các bạn dùng phím nóng thì có thể làm ra một sheet mới rồi "Shitf+f11" nhanh như chóp
 
Web KT

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

Back
Top Bottom