Thoát khi đặt tên sheet trùng nhau

Liên hệ QC

kobebryant

Thành viên thường trực
Tham gia
7/8/09
Bài viết
248
Được thích
28
anh em diễn đàn cho mình hỏi code vba sau 1 tí , em muốn copy sheet đã có và đặt tên lại, nhưng nếu sheet đó đã tồn tại thì phải thoát sub báo Msgbox. Em viết code nó cũng exitsub nhưng khổ nỗi nó vẫn tạo sheet mới với hậu tố (1,2,3....)
Mã:
Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then 'textbox nay de dem qua sheet moi dien so vao dau ky
    MsgBox "Vui long nhap so ton dau ky, hoac khong co vui long nhap 0"
Else
ActiveSheet.Copy After:=ActiveSheet 'copy sheet ky truoc
ActiveSheet.Name = "VAT-NXT" & ComboBox2.Value 'dat lai ten sheet vua copy theo ten ket hop trong combobox, neu sheet nay da co ten roi thi exitsub va bao loi'
On Error GoTo 0
MsgBox "Bao cao " & ComboBox1.Value & " " & ComboBox2.Value & " da ton tai"
Exit Sub
End If
End Sub
 
anh em diễn đàn cho mình hỏi code vba sau 1 tí , em muốn copy sheet đã có và đặt tên lại, nhưng nếu sheet đó đã tồn tại thì phải thoát sub báo Msgbox. Em viết code nó cũng exitsub nhưng khổ nỗi nó vẫn tạo sheet mới với hậu tố (1,2,3....)
Mã:
Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then 'textbox nay de dem qua sheet moi dien so vao dau ky
    MsgBox "Vui long nhap so ton dau ky, hoac khong co vui long nhap 0"
Else
ActiveSheet.Copy After:=ActiveSheet 'copy sheet ky truoc
ActiveSheet.Name = "VAT-NXT" & ComboBox2.Value 'dat lai ten sheet vua copy theo ten ket hop trong combobox, neu sheet nay da co ten roi thi exitsub va bao loi'
On Error GoTo 0
MsgBox "Bao cao " & ComboBox1.Value & " " & ComboBox2.Value & " da ton tai"
Exit Sub
End If
End Sub
Tại vì bạn tạo sheet trước rồi mới đặt tên nên quy trình này sai. Lý ra phải kiểm tra sự tồn tại của tên sheet trước bằng cách viết 1 hàm:
Mã:
Function SheetExist(ByVal SheetName As String) As Boolean
  On Error Resume Next
  SheetExist = Not Sheets(SheetName) Is Nothing
End Function
 
Upvote 0
Tại vì bạn tạo sheet trước rồi mới đặt tên nên quy trình này sai. Lý ra phải kiểm tra sự tồn tại của tên sheet trước bằng cách viết 1 hàm:
Mã:
Function SheetExist(ByVal SheetName As String) As Boolean
  On Error Resume Next
  SheetExist = Not Sheets(SheetName) Is Nothing
End Function
Anh ndu96081631 ơi em chỉ biết viết vba kết hợp macro thôi, anh giúp em cho chót, ghép vào cái code cùi của em thế nào ạ.
Em cám ơn anh.
 
Upvote 0
Anh ndu96081631 ơi em chỉ biết viết vba kết hợp macro thôi, anh giúp em cho chót, ghép vào cái code cùi của em thế nào ạ.
Em cám ơn anh.
Không có file nên viết đại:
Mã:
Private Sub CommandButton1_Click()
  Dim shName As String
  If TextBox1.Value = "" Then 'textbox nay de dem qua sheet moi dien so vao dau ky
    MsgBox "Vui long nhap so ton dau ky, hoac khong co vui long nhap 0"
  Else
    shName = "VAT-NXT" & ComboBox2.Value
    If Not SheetExist(shName) Then
      ActiveSheet.Copy After:=ActiveSheet 'copy sheet ky truoc
      ActiveSheet.Name = shName 'dat lai ten sheet vua copy theo ten ket hop trong combobox, neu sheet nay da co ten roi thi exitsub va bao loi'
    End If
  End If
End Sub
Đương nhiên là có code hàm SheetExist nha
 
Upvote 0
Không có file nên viết đại:
Mã:
Private Sub CommandButton1_Click()
  Dim shName As String
  If TextBox1.Value = "" Then 'textbox nay de dem qua sheet moi dien so vao dau ky
    MsgBox "Vui long nhap so ton dau ky, hoac khong co vui long nhap 0"
  Else
    shName = "VAT-NXT" & ComboBox2.Value
    If Not SheetExist(shName) Then
      ActiveSheet.Copy After:=ActiveSheet 'copy sheet ky truoc
      ActiveSheet.Name = shName 'dat lai ten sheet vua copy theo ten ket hop trong combobox, neu sheet nay da co ten roi thi exitsub va bao loi'
    End If
  End If
End Sub
Đương nhiên là có code hàm SheetExist nha
Chạy trót lọt rồi anh ơi. Cám ơn anh
 
Upvote 0
Web KT

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

Back
Top Bottom