Tôi có file excẹl, gồm hai sheet(danhsach và ngay), tôi muốn tạo 30 sheet có tên theo danh sách trong cột B của sheet danhsach. Mong các bạn giúp đỡ. Cảm ơn.
Private Function SheetExists(ByVal SheetName As String) As Boolean
On Error Resume Next
SheetExists = Not Sheets(SheetName) Is Nothing
End Function
Private Function isValidSheetName(ByVal SheetName As String) As Boolean
If (Len(SheetName) > 31) Or (Len(SheetName) = 0) Then Exit Function
With CreateObject("VBScript.RegExp")
.Pattern = "[\\:\][/?*]"
isValidSheetName = Not .Test(SheetName)
End With
End Function
Private Sub CreateSheet(ByVal arrSheets As Variant)
Dim tmpArr, Item
On Error GoTo ErrHandler
tmpArr = arrSheets
If Not IsArray(tmpArr) Then tmpArr = Array(tmpArr)
For Each Item In tmpArr
If isValidSheetName(CStr(Item)) Then
If Not (SheetExists(CStr(Item))) Then
Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(Item)
End If
End If
Next
Exit Sub
ErrHandler: MsgBox Err.Description
End Sub
Sub Main()
CreateSheet [COLOR=#ff0000]Sheets("danhsach").Range("B2:B31")[/COLOR]
End Sub
Bạn thay câu lệnhOK rồi Anh ndu. Nhưng tôi muốn các sheet trong danh sách đó giống hệt sheet "ngay" thì làm sao. Cảm ơn.
Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(Item)
Sheets("ngay").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = CStr(Item)
Khi chạy nó bị lỗi này nghiaphuc à, mong các bạn giúp.Bạn thay câu lệnh
bởi 2 câu lệnh này nhé:Mã:Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(Item)
Mã:Sheets("ngay").Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = CStr(Item)
Khi chạy nó bị lỗi này nghiaphuc à, mong các bạn giúp.
Tôi chạy code thấy bình thường, chẳng vấn đề gì cả. Có lẽ bạn phải đưa cái file ấy lên đây rồi!Khi chạy nó bị lỗi này nghiaphuc à, mong các bạn giúp.
Dà. File đây ạ. Nhờ các anh giúp
Dà. File đây ạ. Nhờ các anh giúp