Dùng Code gì để hiện tên sheet "đang đứng"

Liên hệ QC

Dauthivan

Thành viên tiêu biểu
Tham gia
15/8/08
Bài viết
565
Được thích
326
Cho em hỏi Code dùng để hiện tên Sheet mà ta "đang đứng".

Em xin hỏi chút nữa: Cách kiểm tra Sheet!A có tồn tại chưa, nếu chưa tồn tại thì thêm nó vào.
 
Cho em hỏi Code dùng để hiện tên Sheet mà ta "đang đứng".
.
Sheet mà ta đang "đứng" gọi là ActiveSheet
Vậy tên của ActiveSheet đương nhiên là ActiveSheet.Name rồi
Em xin hỏi chút nữa: Cách kiểm tra Sheet!A có tồn tại chưa, nếu chưa tồn tại thì thêm nó vào.
Để Add sheet, đương nhiên phải kiểm tra sự tồn tại của nó trước. Tuy nhiên vẫn còn phải thêm 1 công đoạn kiểm tra tính hợp lệ của tên mà ta định đặt cho sheet
Code gồm 2 phần:
1> Kiểm tra sự tồn tại
PHP:
Function SheetExist(ByVal WshName As String) As Boolean
  On Error Resume Next
  SheetExist = Not ThisWorkbook.Sheets(WshName) Is Nothing
End Function
2> Kiểm tra tính hợp lệ
PHP:
Function isValidWshName(ByVal WshName As String) As Boolean
  Dim tmp As String
  If Len(WshName) <= 31 And Len(WshName) Then
    With CreateObject("VBScript.RegExp")
      .Global = True
      .Pattern = "[\\:\][/?*]"
      tmp = .Replace(WshName, "")
    End With
    isValidWshName = (Len(tmp) = Len(WshName))
  End If
End Function
Nếu SheetExist(Tên Sheet) = FalseisValidWshName(Tên sheet) = True thì có thể thêm sheet rồi
Việc thêm sheet là chuyện của bạn (quá đơn giản)
 
Upvote 0
Ban chạy cái này coi sao

MsgBox ActiveSheet.Name
For Each Sheet In Worksheets
If Sheet.Name = "B" Then
MsgBox "sheet ton tai"
Sheet.Select
End If
Next
 
Upvote 0
Một cách cũng đơn giản là ta cứ chọn sheet có tên cần thêm. Nếu lỗi thì chắc là chưa có ta cứ việc thêm

Mã:
Sub AddSheet()
On Error GoTo Them
Sheets("KH2").Select
Exit Sub
Them:
With Sheets.Add
.Name = "KH2"
End With
End Sub
mình nêu vậy nhưng trường hợp sheet ẩn thì sao

Vậy thì ta cứ thêm lỗi thì thoát là xong

Mã:
Sub AddSheet()
On Error GoTo Thoat
With Sheets.Add
.Name = "KH2"
End With
Thoat:
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Sheet mà ta đang "đứng" gọi là ActiveSheet
Vậy tên của ActiveSheet đương nhiên là ActiveSheet.Name rồi

Để Add sheet, đương nhiên phải kiểm tra sự tồn tại của nó trước. Tuy nhiên vẫn còn phải thêm 1 công đoạn kiểm tra tính hợp lệ của tên mà ta định đặt cho sheet
Code gồm 2 phần:
1> Kiểm tra sự tồn tại
PHP:
Function SheetExist(ByVal WshName As String) As Boolean
  On Error Resume Next
  SheetExist = Not ThisWorkbook.Sheets(WshName) Is Nothing
End Function
2> Kiểm tra tính hợp lệ
PHP:
Function isValidWshName(ByVal WshName As String) As Boolean
  Dim tmp As String
  If Len(WshName) <= 31 And Len(WshName) Then
    With CreateObject("VBScript.RegExp")
      .Global = True
      .Pattern = "[\\:\][/?*]"
      tmp = .Replace(WshName, "")
    End With
    isValidWshName = (Len(tmp) = Len(WshName))
  End If
End Function
Nếu SheetExist(Tên Sheet) = FalseisValidWshName(Tên sheet) = True thì có thể thêm sheet rồi
Việc thêm sheet là chuyện của bạn (quá đơn giản)
Hàm kiểm tra sự tồn tại có thể viết như thế này:
PHP:
Function SheetExist(ByVal WshName As String) As Boolean
  SheetExist = Evaluate("ISREF('" & WshName & "'!A1)")
End Function
Hàm kiểm tra tính hợp lệ có thể rút gọn lại như thế này:
PHP:
Function isValidWshName(ByVal WshName As String) As Boolean
  If Len(WshName) > 31 Or WshName = "" Then Exit Function
    With CreateObject("VBScript.RegExp")
      .Pattern = "[\\:\][/?*]"
      isValidWshName = Not .Test(WshName)
    End With
End Function
 
Upvote 0
Hàm kiểm tra sự tồn tại có thể viết như thế này:
PHP:
Function SheetExist(ByVal WshName As String) As Boolean
  SheetExist = Evaluate("ISREF('" & WshName & "'!A1)")
End Function
Hàm kiểm tra tính hợp lệ có thể rút gọn lại như thế này:
PHP:
Function isValidWshName(ByVal WshName As String) As Boolean
  If Len(WshName) > 31 Or WshName = "" Then Exit Function
    With CreateObject("VBScript.RegExp")
      .Pattern = "[\\:\][/?*]"
      isValidWshName = Not .Test(WshName)
    End With
End Function
Hàm dùng Evaluate tôi không khoái lắm (vì chỉ xài được trên Excel, không xài được cho các ứng dụng khác)
Riêng thằng Test Method nay mới biết... Thì ra để kiểm tra chuổi có chứa mấy em trong Pattern không? Rất gọn
 
Upvote 0
Theo mình nếu chỉ kiểm tra sự tồn tại Sheet mà dùng vòng lặp nghe thấy hơi phí. Ta chỉ cần làm như hàm của Ndu là gọn hoặc kết hợp luôn như sau:

Mã:
Sub Test()
Dim Sh As Worksheet
On Error GoTo Them
Set Sh = Sheets("KH3")
MsgBox "Sheet KH3 da co!"
Exit Sub
Them:
Set Sh = Sheets.Add
Sh.Name = "KH3"
End Sub
 
Upvote 0
Thì ta đang viết hàm kiểm tra sự tồn tại của Sheet mà anh. Đương nhiên là dùng trên Excel rồi.
Cái đó chưa chắc!
Phải tính cho trường hợp viết code trên 1 ứng dụng khác để điều khiển Excel chẳng hạn, lúc ấy Evaluate nó.. tèo
 
Upvote 0
Web KT
Back
Top Bottom