Tạo hàng loạt sheet mơi từ một sheet ban đầu, với tên sheet là một danh sách cho tước (1 người xem)

  • Thread starter Thread starter ExcelQN
  • Ngày gửi Ngày gửi

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

ExcelQN

Thành viên hoạt động
Tham gia
7/5/11
Bài viết
186
Được thích
89
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.
 

File đính kèm

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.

Copy hết "đống" code này vào 1 module
Mã:
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
Ra ngoài bảng tính, bấm Alt + F8, gọi Sub Main để chạy
Chỗ màu đỏ chính là danh sách tên sheet, có thể thay đổi tùy ý
 
Upvote 0
OK 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.
 
Upvote 0
OK 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.
Bạn thay câu lệnh
Mã:
Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(Item)
bởi 2 câu lệnh này nhé:
Mã:
Sheets("ngay").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = CStr(Item)
 
Upvote 0
Bạn thay câu lệnh
Mã:
Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(Item)
bởi 2 câu lệnh này nhé:
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.
 

File đính kèm

  • Untitled.png
    Untitled.png
    14 KB · Đọc: 46
Upvote 0
Dà. File đây ạ. Nhờ các anh giúp
 

File đính kèm

Upvote 0

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Tôi chạy trên Excel 2003, cũng chưa phát hiện vì sao có lỗi này. Đem qua máy khác cũng y vậy. Dù sao cũng cảm ơn ác anh giúp đỡ rất nhiều.
 
Upvote 0

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

Back
Top Bottom