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
Bạn thử xem được không ạ: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 đỡ![]()
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ạnBạ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 ^^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 ơ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 ^^
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é :"))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
Hic, mình bó tay chịu thua rồi, xin lỗi.. Bạn chờ sự trợ giúp khác nhé.à ý 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é :"))![]()
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ì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
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, hihiHic, mình bó tay chịu thua rồi, xin lỗi.. Bạn chờ sự trợ giúp khác nhé.