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.
 
cảm ơn !
5 sheet là 5 ngày liên tục( hom nay, mai ,môt......)
mình chỉ nghĩ vậy thôi chưa test bạn xem nhé
Mã:
Sub AddSheet()
On Error GoTo loi
for i=1 to 5
   With Sheets.Add
     .Name = Format(Now()+i-1, """Thang ""mm-yyyy")
   End With
next i 
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
mình chỉ nghĩ vậy thôi chưa test bạn xem nhé
Mã:
Sub AddSheet()
On Error GoTo loi
for i=1 to 5
   With Sheets.Add
     .Name = Format(Now()+i-1, """Thang ""mm-yyyy")
   End With
next i
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
cảm ơn nha để test sem sao
 
Upvote 0
cảm ơn nha để test sem sao
Sub AddSheet()
On Error GoTo loi
For i = 1 To 5
With sheets("total").Add
.Name = Format(Now() + i - 1, "dd-mmm")
End With
Next i
loi:
If Err.Number = 1004 Then
MsgBox "total " & Format(Now(), "dd-mmm") & " da ton tai"
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Exit Sub
End If
End Sub
chạy ok anh nhưng khi em gián sheet có dữ liệu vào thì ko chạy được anh giúp em với ?
 
Upvote 0
mình chỉ nghĩ vậy thôi chưa test bạn xem nhé
Mã:
Sub AddSheet()
On Error GoTo loi
for i=1 to 5
   With Sheets.Add
     .Name = Format(Now()+i-1, """Thang ""mm-yyyy")
   End With
next i
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
Code sai nguyên tắc. Lý ra phải kiểm tra sự tồn tại của sheet rồi mới thêm sheet chứ không phải thêm bừa rồi sao đó thấy bị "dư" lại xóa đi
Thêm nữa là xem lại chỗ này:
Mã:
Format(Now() + i - 1, """Thang ""mm-yyyy")
Có gì đó... sai sai
 
Upvote 0
em chạy thử thì ok. nhưng khi em add sheet total vào thì không chia ra được. macro addsheet anh em dùm em em cảm ơn !
 

File đính kèm

  • EM1 Special check 13,14,15,16,17 Nov & Hari.xlsm
    662.6 KB · Đọc: 9
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 add thêm sheets tháng rồi mình lấy luôn dữ liệu từ sheets cũ qua sheets mới tạo như thế nào ạ
 
Upvote 0
Cho em hỏi add thêm sheets tháng rồi mình lấy luôn dữ liệu từ sheets cũ qua sheets mới tạo như thế nào ạ
Bạn thử:
PHP:
Sub AddSheet()
    On Error GoTo loi
    With Sheets.Add
        .Name = Format(Now(), """Thang ""mm-yyyy")
    End With
loi:
    ThisWorkbook.Sheets("Sheet1").Range("A1:X1000").Copy
    ActiveSheet.Range("A1").PasteSpecial xlPasteValues
    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
+ Chú ý: Bạn thay đổi tên Sheet1 và Range("A1:X1000") cho phù hợp.
 
Upvote 0
Bạn thử:
PHP:
Sub AddSheet()
    On Error GoTo loi
    With Sheets.Add
        .Name = Format(Now(), """Thang ""mm-yyyy")
    End With
loi:
    ThisWorkbook.Sheets("Sheet1").Range("A1:X1000").Copy
    ActiveSheet.Range("A1").PasteSpecial xlPasteValues
    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
+ Chú ý: Bạn thay đổi tên Sheet1 và Range("A1:X1000") cho phù hợp.
làm cho nó y chang như cái mẫu cũ được không ạ em gửi file mẫu á.
 

File đính kèm

  • THÁNG 11-2019.xlsx
    15.8 KB · Đọc: 8
Upvote 0
làm cho nó y chang như cái mẫu cũ được không ạ em gửi file mẫu á.
Bạn thử:
PHP:
Sub AddSheet()
    On Error GoTo loi
    With Sheets.Add
        .Name = Format(Now(), """Thang ""mm-yyyy")
    End With
loi:
    ThisWorkbook.Sheets("Temlate").Range("A1:X1000").Copy
    With ActiveSheet.Range("A1")
        .PasteSpecial xlPasteValues
        .PasteSpecial xlPasteColumnWidths
        .PasteSpecial xlPasteFormats
    End With
    Application.CutCopyMode = False
    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
làm cho nó y chang như cái mẫu cũ được không ạ em gửi file mẫu á.
Bạn thử code sau:
Mã:
Sub them_sheet()
Dim Sh As Worksheet, NewSh As String
NewSh = Format(Date, """Thang ""mm-yyyy")
For Each Sh In Worksheets
    If Sh.Name = NewSh Then
        MsgBox "Sheet " & Format(Now(), """Thang ""mm-yyyy") & " da ton tai"
        Exit Sub
    End If
Next
Sheets("Temlate").Copy after:=Sheets("Temlate")
With ActiveSheet
    .Name = NewSh
    .Range("A1").Value = Left(Sheets("Temlate").Range("A1").Value, Len(Sheets("Temlate").Range("A1")) - 2) & Month(Date)
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom