[Hỏi] Sửa code VBA chọn tất cả các sheet

Liên hệ QC

dcmn1994

Thành viên mới
Tham gia
30/10/13
Bài viết
10
Được thích
0
em có 1 cái code này trên mạng dùng để chọn tất cả các sheet, nhưng khi dùng cho file có sheet ẩn thì lại bị lỗi, giờ em muốn dùng cho file có sheet ẩn thì phải sửa thế nào ạ
Mã:
Sub SelectMultiSheets()
  Dim Temp As String, i As Long
  On Error Resume Next
  i = ActiveSheet.Index
  Temp = " " & Join(Evaluate("Transpose(Row(1:" & Sheets.Count & "))"), " ") & " "
  Temp = Replace(Trim(Replace(Temp, " " & i & " ", " ")), " ", ",")
  Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
 
PHP:
Sub SelectMultiSheets()
  Dim Temp As String, i As Long
  For i = ActiveSheet.Index To Sheets.Count
    If Sheets(i).Visible = False Then Sheets(i).Visible = True
    Temp = IIf(Len(Temp) = 0, i, Temp & "," & i)
  Next
  Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
 
Upvote 0
PHP:
Sub SelectMultiSheets()
  Dim Temp As String, i As Long
  For i = ActiveSheet.Index To Sheets.Count
    If Sheets(i).Visible = False Then Sheets(i).Visible = True
    Temp = IIf(Len(Temp) = 0, i, Temp & "," & i)
  Next
  Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
cái này là nó hiện cả sheet ẩn lên ạ, em chỉ cần nó chọn hết sheet hiện thôi ạ, còn sheet ẩn để nguyên ạ
 
Upvote 0
cái này là nó hiện cả sheet ẩn lên ạ, em chỉ cần nó chọn hết sheet hiện thôi ạ, còn sheet ẩn để nguyên ạ
Bạn dùng thử code này:
Mã:
Sub SelectAllVisibleSheet()
Dim Sh As Object
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Visible = xlSheetVisible Then Sh.Select False
Next
End Sub
 
Upvote 0
Bạn dùng thử code này:
Mã:
Sub SelectAllVisibleSheet()
Dim Sh As Object
For Each Sh In ActiveWorkbook.Sheets
    If Sh.Visible = xlSheetVisible Then Sh.Select False
Next
End Sub
nhưng nó lại không giới hạn mình chọn từ đâu tới đâu, như code của bác trên em sửa lại thế này là oke ạ
Mã:
Sub SelectMultiSheets_test()
  Dim Temp As String, i As Long
  For i = ActiveSheet.Index To Sheets.Count
    If Sheets(i).Visible = False Then
        Temp = IIf(Len(Temp) = 0, i, Temp & "," & i)
        Temp = Replace(Temp, "," & i, "")
    Else
        Temp = IIf(Len(Temp) = 0, i, Temp & "," & i)
    End If
  Next
  Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
 
Upvote 0
nhưng nó lại không giới hạn mình chọn từ đâu tới đâu, như code của bác trên em sửa lại thế này là oke ạ
Mã:
Sub SelectMultiSheets_test()
  Dim Temp As String, i As Long
  For i = ActiveSheet.Index To Sheets.Count
    If Sheets(i).Visible = False Then
        Temp = IIf(Len(Temp) = 0, i, Temp & "," & i)
        Temp = Replace(Temp, "," & i, "")
    Else
        Temp = IIf(Len(Temp) = 0, i, Temp & "," & i)
    End If
  Next
  Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
Code này vẫn chưa đúng nhé, bạn sửa lại thế này xem.
Mã:
Sub GPE()
  Dim Temp As String, i As Byte
  For i = ActiveSheet.Index To Sheets.Count
    If Sheets(i).Visible = -1 Then Temp = IIf(Len(Temp) = 0, i, Temp & "," & i)
  Next
  Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
Bạn có thể thử code của bạn bị sai ở file này.
 

File đính kèm

  • SelectSH.xlsm
    18.3 KB · Đọc: 5
Upvote 0
Code này vẫn chưa đúng nhé, bạn sửa lại thế này xem.
Mã:
Sub GPE()
  Dim Temp As String, i As Byte
  For i = ActiveSheet.Index To Sheets.Count
    If Sheets(i).Visible = -1 Then Temp = IIf(Len(Temp) = 0, i, Temp & "," & i)
  Next
  Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
Bạn có thể thử code của bạn bị sai ở file này.
em cảm ơn anh ạ
 
Upvote 0
nhưng nó lại không giới hạn mình chọn từ đâu tới đâu
Bạn biết sửa code, mà bác ấy gửi cho bạn phần "ruột" rồi, giờ thay for each thành for i thôi sao bạn không thử nhỉ (Mình thấy cách này tường minh hơn):
Mã:
Sub SelectAllVisibleSheet()
Dim I As Long
For I = ActiveSheet.Index To Sheets.Count
    If Sheets(I).Visible = xlSheetVisible Then Sheets(I).Select False
Next
End Sub
 
Upvote 0
Bạn biết sửa code, mà bác ấy gửi cho bạn phần "ruột" rồi, giờ thay for each thành for i thôi sao bạn không thử nhỉ (Mình thấy cách này tường minh hơn):
Mã:
Sub SelectAllVisibleSheet()
Dim I As Long
For I = ActiveSheet.Index To Sheets.Count
    If Sheets(I).Visible = xlSheetVisible Then Sheets(I).Select False
Next
End Sub
em không để ý cái đấy, thank bác đã chỉ giáo :D em mới biết đến VBA nên còn nhiều sai sót ạ
 
Upvote 0
Chọn xong rồi làm gì? Copy hay xóa...? Cho dù làm gì thì mình thấy chọn tay là nhanh nhất.
 
Upvote 0
Chọn xong rồi làm gì? Copy hay xóa...? Cho dù làm gì thì mình thấy chọn tay là nhanh nhất.
dạ em chọn xong để in ạ, cái hồ sơ KCS đường có 1 số sheet ẩn, chỉ phục vụ lúc nghiệm thu lớp 1 hoặc nghiệm thu hoàn thành, em để ẩn, chỉ khi nào lớp 1 em mới hiện lên để in nên hỏi code để cho vào ạ
 
Upvote 0
Web KT

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

Back
Top Bottom