nhờ anh em chỉ xem code sai chỗ nào mà báo lỗi (1 người xem)

Liên hệ QC

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

Lê Duy Thương

Cạo lấy gì gội (Dịch quá không gội được)
Tham gia
14/10/09
Bài viết
3,113
Được thích
4,852
tôi có đoạn code lấy tên sheet.thế này
PHP:
Sub SUMMARY() 
  Dim WS As Worksheet, i As Long
 (1)  Dim Arrsheets As Variant 
  Application.ScreenUpdating = False  
   Sheets("SUMMARY").Range("2:5000").CLEAR 
 (1)  Arrsheets = Array("SUMMARY", "DATA", "IMPORTED", "TEMP") 
     For i = 1 To 4      
      For Each WS In Worksheets
(1)    If WS.Name <> Arrsheets Then
(2)    'If WS.Name <> "SUMMARY" And WS.Name <> "DATA" And WS.Name <> "IMPORTED" And WS.Name <> "TEMP" Then 
       Sheets("SUMMARY").Range("A2000").End(3).Offset(1, 0).Value = WS.Name 
      End If   
    Next    
 Next    
    Application.ScreenUpdating = 1   
End Sub

vấn đề là khi tôi dùng đoạn code số 2 thì không có gì phải nói. còn số 1 thì báo lỗi.do đang tìm hiểu array sheet nên không biết mình sai ở đâu.
 

File đính kèm

Lần chỉnh sửa cuối:
Sửa
If WS.Name <> Arrsheets Then
Thành
If WS.Name <> Arrsheets(i-1) Then

Arrsheets là mảng chứ không phải là string, không so sánh với sheets(...).Name được
 
Upvote 0
Array("SUMMARY", "DATA", "IMPORTED", "TEMP") là 1 mảng. Giá trị của mảng là 1 tập hợp các giá trị của các phần tử.
Nên phải truy xuất từng phần tử kiểu Arrsheets(i) rồi muốn so sánh với cái gì cũng được.
 
Upvote 0
tôi có đoạn code lấy tên sheet.thế này
PHP:
Sub SUMMARY() 
  Dim WS As Worksheet, i As Long
 (1)  Dim Arrsheets As Variant 
  Application.ScreenUpdating = False  
   Sheets("SUMMARY").Range("2:5000").CLEAR 
 (1)  Arrsheets = Array("SUMMARY", "DATA", "IMPORTED", "TEMP") 
     For i = 1 To 4      
      For Each WS In Worksheets
(1)    If WS.Name <> Arrsheets Then
(2)    'If WS.Name <> "SUMMARY" And WS.Name <> "DATA" And WS.Name <> "IMPORTED" And WS.Name <> "TEMP" Then 
       Sheets("SUMMARY").Range("A2000").End(3).Offset(1, 0).Value = WS.Name 
      End If   
    Next    
 Next    
    Application.ScreenUpdating = 1   
End Sub

vấn đề là khi tôi dùng đoạn code số 2 thì không có gì phải nói. còn số 1 thì báo lỗi.do đang tìm hiểu array sheet nên không biết mình sai ở đâu.

Gì vậy Thương?
WS.Name là String thì làm sao so sánh với Arrsheets được (Arrsheets là 1 Array)
Chẳng khác nào so sánh ĐÀN BÀ với ĐÀN... ONG ---> Hổng ăn nhậu gì nhau cả
---------
Muốn đơn giản thì dùng thế này:
Mã:
Sub SUMMARY()
  Dim WS As Worksheet, i As Long
  Dim tmp As String
  Application.ScreenUpdating = False
  Sheets("SUMMARY").Range("2:5000").CLEAR
  tmp = "?SUMMARY?DATA?IMPORTED?TEMP?"
    For Each WS In Worksheets
      If InStr(1, tmp, "?" & WS.Name & "?", vbTextCompare) = 0 Then
        Sheets("SUMMARY").Range("A2000").End(3).Offset(1, 0).Value = WS.Name
      End If
    Next
  Application.ScreenUpdating = 1
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Gì vậy Thương?
WS.Name là String thì làm sao so sánh với Arrsheets được (Arrsheets là 1 Array)
Chẳng khác nào so sánh ĐÀN BÀ với ĐÀN... ONG ---> Hổng ăn nhậu gì nhau cả
---------
Muốn đơn giản thì dùng thế này:
Mã:
Sub SUMMARY()
  Dim WS As Worksheet, i As Long
  Dim tmp As String
  Application.ScreenUpdating = False
  Sheets("SUMMARY").Range("2:5000").CLEAR
  tmp = "?SUMMARY?DATA?IMPORTED?TEMP?"
    For Each WS In Worksheets
      If InStr(1, tmp, "?" & WS.Name & "?", vbTextCompare) = 0 Then
        Sheets("SUMMARY").Range("A2000").End(3).Offset(1, 0).Value = WS.Name
      End If
    Next
  Application.ScreenUpdating = 1
End Sub

cái for i 1 to 4 là tôi muốn nó chạy 4 lần . cái này để thích hợp với công việc thôi.//**/
 
Upvote 0

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

Back
Top Bottom