Giúp Hoàn Thiện Code Cho Nút Bấm Tạo Sheets Mới!

Liên hệ QC

mrkhanhvu

Thành viên mới
Tham gia
28/10/10
Bài viết
11
Được thích
1
Thân chào anh chị em diễn đàn!

Tôi mới tìm hiểu về vb nên tập tành viết code cho nút bấm tạo một sheets mới theo tên được nhập. Nhưng có một số vấn đề nảy sinh mà tôi chưa tự giải quyết được, nhờ các bạn trong diễn đàn giúp đỡ.
- Thư nhất: Xin các bạn giúp code định dạng cho textbox để nhập ngày,tháng,năm theo định dạng: dd.mm.yyyy Nếu nhập khác định dạng này thì hiển thị một thông báo.
- Thứ hai: Nếu nhập ngày vào textbox mà trùng với những ngày đã được tạo thì cũng hiển thị một thông báo.
- Thứ ba: Viết code để add ngày dd.mm.yyyy trong textbox vào cell B1 trong sheets vừa được tạo mới.

Rất mong nhận được phản hồi của các bạn. Trân trọng!
 

File đính kèm

1) Muốn nhập ngày chính xác, bạn cần thêm một công cụ nữa để chọn cho nhanh, đó là Control Calendar. Chỉ việc click vào đó.

PHP:
Private Sub Calendar1_Click()
  TextBox1 = Calendar1
End Sub

2) Muốn định dạng ngày tháng trong Textbox1, bạn phải làm như sau:

PHP:
Private Sub TextBox1_Change()
  TextBox1 = Format(TextBox1, "dd.mm.yyyy")
End Sub

3) Bạn cần phải xác định sheet tồn tại hay không, nếu không sẽ gặp lỗi! Cho nên phải thêm một hàm kiểm tra sheet:

PHP:
Function WsExit(wsName As String) As Boolean
  On Error Resume Next
  WsExit = CBool(Len(Worksheets(wsName).Name) > 0)
End Function

4) Trong bài của bạn, đó không phải là tạo sheet mới mà là copy từ một sheet đã tồn tại. Tôi sửa lại như sau:

PHP:
Private Sub CommandButton1_Click()
  If Me.TextBox1 = "" Then
    MsgBox "Ban chua nhap ngay tao!", , "THONG BAO!"
  Else
    If WsExit("Base (2)") = True Or WsExit(TextBox1) = True Then
      MsgBox "Sheet nay da ton tai! Ban phai chon ten khac!", , "Thông báo"
    Else
      Sheets("Base").Copy After:=Sheets(Sheets.Count)
      Sheets("Base (2)").Name = TextBox1
    End If
  End If
End Sub

5) Nếu bạn muốn tạo mới hoàn toàn một sheet, thì bạn dùng thủ tục dưới đây:

PHP:
Private Sub CommandButton1_Click()
  If Me.TextBox1 = "" Then
    MsgBox "Ban chua nhap ngay tao!", , "THONG BAO!"
  Else
    If WsExit(TextBox1) = True Then
      MsgBox "Sheet nay da ton tai! Ban phai chon ten khac!", , "Thông báo"
    Else
      Sheets.Add After:=Sheets(Sheets.Count)
      Sheets(Sheets.Count).Name = TextBox1
    End If
  End If
End Sub

Đôi lời thảo luận cùng bạn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Rất cảm ơn bạn minhthien321!

Nút bấm mà tôi đề cập la copy từ sheets "BASE" cảm ơn bạn đã sửa.
Vấn đề thứ nhất và thứ hai bạn minhthien321 đã giúp đỡ rồi còn vấn đề thứ ba mong nhận được sự giúp đỡ tiếp của các bạn từ diễn đàn.
 
Upvote 0
Rất cảm ơn bạn minhthien321!

Nút bấm mà tôi đề cập la copy từ sheets "BASE" cảm ơn bạn đã sửa.
Vấn đề thứ nhất và thứ hai bạn minhthien321 đã giúp đỡ rồi còn vấn đề thứ ba mong nhận được sự giúp đỡ tiếp của các bạn từ diễn đàn.

Dễ như vậy tưởng bạn làm được chứ:

PHP:
''Code nay de tao sheet moi:
Private Sub CommandButton1_Click()
  If Me.TextBox1 = "" Then
    MsgBox "Ban chua nhap ngay tao!", , "THONG BAO!"
  Else
    If WsExit(TextBox1) = True Then
      MsgBox "Sheet nay da ton tai! Ban phai chon ten khac!", , "Thông báo"
    Else
      Sheets.Add After:=Sheets(Sheets.Count)
      Sheets(Sheets.Count).Name = TextBox1
      Sheets(TextBox1.Value).[B1] = TextBox1
    End If
  End If
End Sub


'=========================================

'Code nay de copy lai sheet da chon (o day la sheet Base):
Private Sub CommandButton12_Click()
  If Me.TextBox1 = "" Then
    MsgBox "Ban chua nhap ngay tao!", , "THONG BAO!"
  Else
    If WsExit("Base (2)") = True Or WsExit(TextBox1) = True Then
      MsgBox "Sheet nay da ton tai! Ban phai chon ten khac!", , "Thông báo"
    Else
      Sheets("Base").Copy After:=Sheets(Sheets.Count)
      Sheets("Base (2)").Name = TextBox1
      Sheets(TextBox1.Value).[B1] = TextBox1
    End If
  End If
End Sub
 
Upvote 0
Cảm ơn bạn minhthien321 một lần nữa! Rất vui khi bạn quan tâm tới bài này. Thanks!
 
Upvote 0
Web KT

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

Back
Top Bottom