Tạo sheet mới bằng macro

Liên hệ QC

minhbinhdinh

Thành viên chính thức
Tham gia
15/8/08
Bài viết
65
Được thích
3
chào mọi người.
tôi muốn tạo 01 sheet mới bằng macro đưa vào 01 command để tạo ra sheet theo tháng _vd tạo sheet mới, đặt tên là thang3/2010.rồi qua tháng 4 lại tạo sheet và đặt là thang4/2010
tôi có thử qua thu macro để chỉnh sửa, nhưng trình độ còn yếu làm không được.
Mong mọi người không chê và giúp đỡ.Cảm ơn nhiều.
 
Bạn thử 2 dòng này xem
PHP:
    Sheets.Add
    ActiveSheet.Name = "Thang" & Month(Now()) & "-" & Year(Now())
TDN
 
Upvote 0
chào mọi người.
tôi muốn tạo 01 sheet mới bằng macro đưa vào 01 command để tạo ra sheet theo tháng _vd tạo sheet mới, đặt tên là thang3/2010.rồi qua tháng 4 lại tạo sheet và đặt là thang4/2010
tôi có thử qua thu macro để chỉnh sửa, nhưng trình độ còn yếu làm không được.
Mong mọi người không chê và giúp đỡ.Cảm ơn nhiều.
Tên sheet không thể có dấu / được đâu nha ---> Có thể thay dấu / thành dấu -
Tôi để xuất 1 code gần giống với code của thầy Phước
PHP:
With Sheets.Add
  .Name = Format(Now(), """Thang ""mm-yyyy")
End With
 
Upvote 0
Em dùng code sau để kiểm tra sheet có tồn tại hay chưa, nếu chưa thì thêm, ngược lại thì xóa bỏ.

Mã:
Sub AddSheet()
On Error GoTo loi
   With Sheets.Add
     .Name = Format(Now(), """Thang ""mm-yyyy")
   End With
loi:
   If Err.Number = 1004 Then
       MsgBox "Sheet " & Format(Now(), """Thang ""mm-yyyy") & " da ton tai"
       Application.DisplayAlerts = False
          ActiveSheet.Delete
       Application.DisplayAlerts = True
     Exit Sub
   End If
End Sub
 
Upvote 0
Em dùng code sau để kiểm tra sheet có tồn tại hay chưa, nếu chưa thì thêm, ngược lại thì xóa bỏ.

Mã:
Sub AddSheet()
On Error GoTo loi
   With Sheets.Add
     .Name = Format(Now(), """Thang ""mm-yyyy")
   End With
loi:
   If Err.Number = 1004 Then
       MsgBox "Sheet " & Format(Now(), """Thang ""mm-yyyy") & " da ton tai"
       Application.DisplayAlerts = False
          ActiveSheet.Delete
       Application.DisplayAlerts = True
     Exit Sub
   End If
End Sub
Như vậy là Doom Add sheet trước, xong mới kiểm tra sự tồn tại của sheet này ---> hơi tốn công!
Sao không kiểm tra trước, nếu tồn tại rồi thì ta... làm thinh luôn
Hàm kiểm tra sheet có tồn tại hay không
PHP:
Function SheetExist(WorkSheetName As String) As Boolean
  On Error Resume Next
  SheetExist = Not Sheets(WorkSheetName) Is Nothing
End Function
Cuối cùng là code thêm sheet:
PHP:
Sub AddSheet()
  Dim ShN As String
  ShN = Format(Now(), """Thang ""mm-yyyy")
  If Not SheetExist(ShN) Then Sheets.Add.Name = ShN
End Sub
Tôi nghĩ là gọn hơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Em nghĩ việc bẫy lỗi là cần thiết nhưng thường thì đưa ra giải pháp để giải quyết vấn đề. Còn vấn đề bẫy lỗi thì tuỳ theo trường hợp và nhu cầu của tác giả; từ đó sẽ bổ sung thêm. Nhiều khi "ôm đồm" quá sẽ làm rối thêm, hi hi. Vì giải quyết cặn kẽ 1 vấn đề (dù nhỏ) đôi khi bàn hoài vẫn không hết
 
Upvote 0
Cho em đào mộ tí,
Em có 1 danh sách nhân viên, một cột là mã số nhân viên, NV001 đến NV099, các cột bên cạnh là họ tên và một vài thông tin khác
Các bác có thể viết hộ em đoạn Macro sao cho em click vào mã số nhân viên nào thì Excel sẽ mở ra 1 sheet có tên đó được không?, ví dụ click vào mã số nhân viên NV001 thì excel sẽ mở ra sheet NV001
Và khi em thêm một nhân viên với vào, ví dụ NV100, thì Excel sẽ tự động tạo thêm một sheet mới có tên là NV100 và mở luôn sheet đó ra để làm việc
Nếu chức năng tạo thêm sheet mới mà thêm theo kiểu copy từ một Sheet template thì tốt quá ạ
Em cảm ơn
 
Upvote 0
Cho em đào mộ tí,
Em có 1 danh sách nhân viên, một cột là mã số nhân viên, NV001 đến NV099, các cột bên cạnh là họ tên và một vài thông tin khác
Các bác có thể viết hộ em đoạn Macro sao cho em click vào mã số nhân viên nào thì Excel sẽ mở ra 1 sheet có tên đó được không?, ví dụ click vào mã số nhân viên NV001 thì excel sẽ mở ra sheet NV001
Và khi em thêm một nhân viên với vào, ví dụ NV100, thì Excel sẽ tự động tạo thêm một sheet mới có tên là NV100 và mở luôn sheet đó ra để làm việc
Nếu chức năng tạo thêm sheet mới mà thêm theo kiểu copy từ một Sheet template thì tốt quá ạ
Em cảm ơn
Mọi thứ đều có thể nếu bạn gởi file cụ thể
 
Upvote 0
Cho em đào mộ tí,
Em có 1 danh sách nhân viên, một cột là mã số nhân viên, NV001 đến NV099, các cột bên cạnh là họ tên và một vài thông tin khác
Các bác có thể viết hộ em đoạn Macro sao cho em click vào mã số nhân viên nào thì Excel sẽ mở ra 1 sheet có tên đó được không?, ví dụ click vào mã số nhân viên NV001 thì excel sẽ mở ra sheet NV001
Và khi em thêm một nhân viên với vào, ví dụ NV100, thì Excel sẽ tự động tạo thêm một sheet mới có tên là NV100 và mở luôn sheet đó ra để làm việc
Nếu chức năng tạo thêm sheet mới mà thêm theo kiểu copy từ một Sheet template thì tốt quá ạ
Em cảm ơn
Bạn không nên chen ngang bài của người khác, nên tìm chủ đề về Hyperlink (trên diễn đàn đã có nhiều bài viết rồi), hoặc tham khảo File trong bài viết của Link sau:

http://www.giaiphapexcel.com/dienda...g-1-file-excel-không-bị-mất-đường-dẫn.111134/


Nếu File trong Link trên chưa đáp ứng yêu cầu thì bạn nên mở Topic mới, với tiêu đề là tạo Hyper Link đết các sheet rồi nêu cụ thể nội dung bạn muốn làm cái gì?
 
Upvote 0
Bạn không nên chen ngang bài của người khác, nên tìm chủ đề về Hyperlink (trên diễn đàn đã có nhiều bài viết rồi), hoặc tham khảo File trong bài viết của Link sau:

http://www.giaiphapexcel.com/diendan/threads/cách-giữ-hyperlink-các-sheet-trong-cùng-1-file-excel-không-bị-mất-đường-dẫn.111134/


Nếu File trong Link trên chưa đáp ứng yêu cầu thì bạn nên mở Topic mới, với tiêu đề là tạo Hyper Link đết các sheet rồi nêu cụ thể nội dung bạn muốn làm cái gì?

8 năm rồi, họ không còn trao đổi nữa thì có gọi là chen ngang không?
Với cả ý em không phải là chỉ hyperlink đơn thuần, ý em là macro vừa tạo hyperlink sang sheet hiện có, nếu chưa có thì tạo mới sheet, cũng liên quan đến chủ đề này đấy chứ
 
Upvote 0
8 năm rồi, họ không còn trao đổi nữa thì có gọi là chen ngang không?
Với cả ý em không phải là chỉ hyperlink đơn thuần, ý em là macro vừa tạo hyperlink sang sheet hiện có, nếu chưa có thì tạo mới sheet, cũng liên quan đến chủ đề này đấy chứ
Có liên quan đến tạo sheet mới là được rồi
Xem file
 

File đính kèm

  • CreateSheets.xlsb
    17.2 KB · Đọc: 87
Upvote 0
Có liên quan đến tạo sheet mới là được rồi
Xem file
Cảm ơn bác!
Bác cho em hỏi 1 chút:
1. Tại sao các ô 'Bước x" thì lại tạo được sheet mới, còn ô "a[n" thì lại không ạ?
2. Có thể tạo sheet mới bằng cách copy 1 sheet template có sẵn rồi đổi tên không bác?
 
Upvote 0
Cảm ơn bác!
Bác cho em hỏi 1 chút:
1. Tại sao các ô 'Bước x" thì lại tạo được sheet mới, còn ô "a[n" thì lại không ạ?
2. Có thể tạo sheet mới bằng cách copy 1 sheet template có sẵn rồi đổi tên không bác?
Trả lời câu 1: Bạn thử đổi tên sheet nào đó thành a[n xem Excel có cự nự gì không? ---> Suy ra điều cần biết
Trả lời câu 2: Có thể, với điều kiện bạn cho file lên đây rồi tính (file không cần có dữ liệu thật nhưng cấu trúc dữ liệu phải giống như thật)
 
Upvote 0
Trả lời câu 1: Bạn thử đổi tên sheet nào đó thành a[n xem Excel có cự nự gì không? ---> Suy ra điều cần biết
Trả lời câu 2: Có thể, với điều kiện bạn cho file lên đây rồi tính (file không cần có dữ liệu thật nhưng cấu trúc dữ liệu phải giống như thật)
Ah, là có kí tự đặc biệt đúng không bác?
Sáng mai em mới lên cty mới có thể gửi file đc ạ.
Nhưng bác cho em hỏi cấu trúc dữ liệu là như thế nào ạ? Chỉ là form mẫu sẵn để đỡ phải copy sau này thôi mà bác!
Cảm ơn bác nhiều ạ!
 
Upvote 0
Trả lời câu 1: Bạn thử đổi tên sheet nào đó thành a[n xem Excel có cự nự gì không? ---> Suy ra điều cần biết
Trả lời câu 2: Có thể, với điều kiện bạn cho file lên đây rồi tính (file không cần có dữ liệu thật nhưng cấu trúc dữ liệu phải giống như thật)
File đây ạ,
bác có thể sửa cho em khi tạo mới sheet thì nó copy từ Sheet NV000 rồi rename thành tên mà mình vừa click ô vào đấy ạ!
Cảm ơn bác!
 

File đính kèm

  • Nhanvien.xlsb
    22.7 KB · Đọc: 35
Upvote 0
File đây ạ,
bác có thể sửa cho em khi tạo mới sheet thì nó copy từ Sheet NV000 rồi rename thành tên mà mình vừa click ô vào đấy ạ!
Cảm ơn bác!
Góp ý cho bạn:
1/ Nói về quản lý nhân sự thì không ai theo dõi mỗi người 1 sheet như kiểu bạn làm.
2/ Theo dõi tất tần tật các thứ trong sheet Main là đủ.
3/ Dùng 1 sheet tạm gọi là nhân viên, có thể dùng hàm để truy vấn dữ liệu từng nhân viên bên sheet Main, ngon hơn nữa thì truy vấn dữ liệu của nhân viên nào thì nó hiện cái hình vào cho hoành tráng.
4/ Ngon hơn nữa thì Scan bằng cấp, lý lịch lưu vào 1 Folder nào đó khi cần thì nó lấy danh sách vào và tạo Link, để muốn xem cái gì của người đó thì click vào Link để xem.
 
Upvote 0
Góp ý cho bạn:
1/ Nói về quản lý nhân sự thì không ai theo dõi mỗi người 1 sheet như kiểu bạn làm.
2/ Theo dõi tất tần tật các thứ trong sheet Main là đủ.
3/ Dùng 1 sheet tạm gọi là nhân viên, có thể dùng hàm để truy vấn dữ liệu từng nhân viên bên sheet Main, ngon hơn nữa thì truy vấn dữ liệu của nhân viên nào thì nó hiện cái hình vào cho hoành tráng.
4/ Ngon hơn nữa thì Scan bằng cấp, lý lịch lưu vào 1 Folder nào đó khi cần thì nó lấy danh sách vào và tạo Link, để muốn xem cái gì của người đó thì click vào Link để xem.
Vâng, cảm ơn bác!
Cái này em không phải là để quản lý nhân sự, mà làm một vài việc liên quan đến nhân sự thôi ạ!
Chứ còn hồ sơ thì vẫn phải lưu file cứng và scan file mềm chứ ạ
 
Upvote 0
Vâng, cảm ơn bác!
Cái này em không phải là để quản lý nhân sự, mà làm một vài việc liên quan đến nhân sự thôi ạ!
Chứ còn hồ sơ thì vẫn phải lưu file cứng và scan file mềm chứ ạ
Nếu vậy thì chỉ cần 2 sheet là đủ:

1/ Theo dõi tất tần tật các thứ trong sheet Main.
2/ Sử dụng 1 sheet tạm gọi là nhân viên để truy vấn.
 
Upvote 0
Em dùng code sau để kiểm tra sheet có tồn tại hay chưa, nếu chưa thì thêm, ngược lại thì xóa bỏ.

Mã:
Sub AddSheet()
On Error GoTo loi
   With Sheets.Add
     .Name = Format(Now(), """Thang ""mm-yyyy")
   End With
loi:
   If Err.Number = 1004 Then
       MsgBox "Sheet " & Format(Now(), """Thang ""mm-yyyy") & " da ton tai"
       Application.DisplayAlerts = False
          ActiveSheet.Delete
       Application.DisplayAlerts = True
     Exit Sub
   End If
End Sub
cho em hỏi đặt tên 5 sheet liên tục theo ngày thì viết sao anh?
em cảm ơn!
 
Upvote 0
Web KT
Back
Top Bottom