Cần giúp tạo macro tạo Sheet mới và gọi macro khác áp dụng lên sheet mới đó (1 người xem)

Liên hệ QC

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

ManhDuc1382

Supreme Сasual Dating - Verified Maidens
Tham gia
5/3/20
Bài viết
46
Được thích
16
Giới tính
Nam
Nghề nghiệp
Health
Chào các bạn, mình đang cần tạo macro thêm sheet mới và đồng thời gọi macro đã có áp dụng lên sheet mới tạo ra, yêu cầu cụ thể mình có viết trong file đính kèm, cảm ơn các bạn đã giúp đỡ :D:D:D
 

File đính kèm

Chào các bạn, mình đang cần tạo macro thêm sheet mới và đồng thời gọi macro đã có áp dụng lên sheet mới tạo ra, yêu cầu cụ thể mình có viết trong file đính kèm, cảm ơn các bạn đã giúp đỡ :D:D:D
Bạn thử xem được không ạ:
Mã:
Sub TaoSheetMoi()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "SheetMoi_" & .Sheets.Count - 2
    End With
End Sub

Sub Test_abc()
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Range("A1").Value = 9999999
End Sub
 
Upvote 0
Bạn thử xem được không ạ:
Mã:
Sub TaoSheetMoi()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "SheetMoi_" & .Sheets.Count - 2
    End With
End Sub

Sub Test_abc()
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Range("A1").Value = 9999999
End Sub
ok bạn nhé, code hoạt động rất tốt ^^ có gì thắc mắc mình sẽ hỏi thêm nhé, cảm ơn bạn ;)
Bài đã được tự động gộp:

Bạn thử xem được không ạ:
Mã:
Sub TaoSheetMoi()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "SheetMoi_" & .Sheets.Count - 2
    End With
End Sub

Sub Test_abc()
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Range("A1").Value = 9999999
End Sub
Bạn ơi bạn xem giúp mình với nhé, đó là khi mà giả sử mình có đến SheetMoi_18 rồi mình xóa SheetMoi_16 và 17 đi thì khi chạy macro đến đoạn SheetMoi_18 thì nó báo lỗi là tên bị trùng và sub abc không áp dụng được, vậy bạn giúp mình thêm điều kiện nếu nhảy đến SheetMoi_18 mà thấy bị trùng tên thì tên sheet mới là SheetMoi_19 nhé, tương tự nếu trước đó mình có hai sheet bị trùng tên trở lên, ví dụ SheetMoi_18 và SheetMoi_19 thì nó sẽ nhảy lên SheetMoi_20 nhé , mình cảm ơn ^^
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
ok bạn nhé, code hoạt động rất tốt ^^ có gì thắc mắc mình sẽ hỏi thêm nhé, cảm ơn bạn ;)
Bài đã được tự động gộp:


Bạn ơi bạn xem giúp mình với nhé, đó là khi mà giả sử mình có đến SheetMoi_18 rồi mình xóa SheetMoi_16 và 17 đi thì khi chạy macro đến đoạn SheetMoi_18 thì nó báo lỗi là tên bị trùng và sub abc không áp dụng được, vậy bạn giúp mình thêm điều kiện nếu nhảy đến SheetMoi_18 mà thấy bị trùng tên thì tên sheet mới là SheetMoi_19 nhé, tương tự nếu trước đó mình có hai sheet bị trùng tên trở lên, ví dụ SheetMoi_18 và SheetMoi_19 thì nó sẽ nhảy lên SheetMoi_20 nhé , mình cảm ơn ^^

Hic, mình chưa hiểu lắm. Bạn thử lại xem:

Mã:
Sub TaoSheetMoi()
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "SheetMoi_" & .Sheets.Count - 2
    End With
    Application.DisplayAlerts = True
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Range("A1").Value = 9999999
End Sub
 
Upvote 0
Hic, mình chưa hiểu lắm. Bạn thử lại xem:

Mã:
Sub TaoSheetMoi()
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "SheetMoi_" & .Sheets.Count - 2
    End With
    Application.DisplayAlerts = True
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Range("A1").Value = 9999999
End Sub
à ý mình là nếu giả sử mình tạo ra vài sheet rồi mình xóa một số sheet trung gian đi, ví dụ tạo đến SheetMoi_10 rồi mình xóa SheetMoi_5 , 6 , 7 , 8 chẳng hạn thì khi chạy code của bạn nó sẽ tạo lại lần lượt các sheet mới 5 , 6, 7 , 8 . Nếu tiếp tục chạy sub thì nó sẽ tạo SheetMoi_9 và SheetMoi_10 , tuy nhiên hai sheet 9 và 10 này đã có nên nó sẽ báo lỗi, vậy bạn giúp mình nhảy qua hai sheet bị trùng này để tạo SheetMoi_11 nhé :")) --=0
 
Upvote 0
à ý mình là nếu giả sử mình tạo ra vài sheet rồi mình xóa một số sheet trung gian đi, ví dụ tạo đến SheetMoi_10 rồi mình xóa SheetMoi_5 , 6 , 7 , 8 chẳng hạn thì khi chạy code của bạn nó sẽ tạo lại lần lượt các sheet mới 5 , 6, 7 , 8 . Nếu tiếp tục chạy sub thì nó sẽ tạo SheetMoi_9 và SheetMoi_10 , tuy nhiên hai sheet 9 và 10 này đã có nên nó sẽ báo lỗi, vậy bạn giúp mình nhảy qua hai sheet bị trùng này để tạo SheetMoi_11 nhé :")) --=0
Hic, mình bó tay chịu thua rồi, xin lỗi.. Bạn chờ sự trợ giúp khác nhé.
 
Upvote 0
Bộ đội mà buông súng đầu hàng sớm thế. Bạn thử
Mã:
Sub ThemSheet()
    Dim sh As Worksheet, s As String, n As Integer, k As Integer
    s = "SheetMoi_"
    n = 0
    For Each sh In Worksheets
        If Left(sh.Name, Len(s)) = s Then
            k = CInt(Right(sh.Name, Len(sh.Name) - Len(s)))
            If k > n Then n = k
        End If
    Next
    Set sh = Worksheets.Add(, Worksheets(Worksheets.Count))
    sh.Name = s & (n + 1)
End Sub
 
Upvote 0
Bộ đội mà buông súng đầu hàng sớm thế. Bạn thử
Mã:
Sub ThemSheet()
    Dim sh As Worksheet, s As String, n As Integer, k As Integer
    s = "SheetMoi_"
    n = 0
    For Each sh In Worksheets
        If Left(sh.Name, Len(s)) = s Then
            k = CInt(Right(sh.Name, Len(sh.Name) - Len(s)))
            If k > n Then n = k
        End If
    Next
    Set sh = Worksheets.Add(, Worksheets(Worksheets.Count))
    sh.Name = s & (n + 1)
End Sub
Mình cảm ơn bạn nhé, mình thấy phương án của bạn ok rồi đấy, cảm ơn bạn đã không buông súng, hì hì --=0 --=0 --=0
Bài đã được tự động gộp:

Hic, mình bó tay chịu thua rồi, xin lỗi.. Bạn chờ sự trợ giúp khác nhé.
hì hì, không có gì bạn nhé, mình cảm ơn bạn đã giúp đỡ, thua keo này mình bày keo khác thôi, hihi --=0--=0--=0
 
Upvote 0
Web KT

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

Back
Top Bottom