Sắp xếp dữ liệu sử dụng worksheets(1) và sheet1 khác nhau chỗ nào (1 người xem)

Liên hệ QC

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

minhtungph

None
Tham gia
18/9/13
Bài viết
198
Được thích
78
mình có code sắp xếp đơn giản như sau:
Mã:
Sub SapXep()
    ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort.SortFields.Clear
    ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort.SortFields.Add Key:=Range("Q3:Q" & r), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort
        .SetRange Range("P2:Q" & r)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
File của mình chỉ có 1 sheet, nhưng tại sao khi mình thay Worksheets(1) thành sheet1 thì lại bị lỗi
 
mình có code sắp xếp đơn giản như sau:
Mã:
Sub SapXep()
    ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort.SortFields.Clear
    ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort.SortFields.Add Key:=Range("Q3:Q" & r), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort
        .SetRange Range("P2:Q" & r)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
File của mình chỉ có 1 sheet, nhưng tại sao khi mình thay Worksheets(1) thành sheet1 thì lại bị lỗi
Ta có 3 cách gọi sheet
- Gọi tên theo chỉ số Index, tức số thứ tự tính từ trái sang phải trên SheetTabs. Ví dụ: Worksheets(1) hoặc Sheets(1)
- Gọi theo tên sheet ta đặt trên bảng tính, chẳng hạn Worksheets("Main") hoặc Sheets("Main"). Chữ "Main" ở đây là tên sheet mà ta nhìn thấy trên bảng tính (xem hình)


Capture2.JPG



-
















Gọi theo tên sheet trong cửa sổ VBA, chẳng hạn Sheet1, Sheet2...(xem hình)

Capture.JPG




















------------------------------------------------------------------
Trường hợp của bạn gọi WorkSheets(1) hoặc Sheets(1) sẽ luôn luôn đúng vì bảng tính luôn tồn tại ít nhất 1 sheet. Gọi Sheet1 có thể sai. Kiểm tra lại bên trong cửa sổ VBA, có khi hiện tại nó đang là Sheet2, Sheet3... hay gì gì khác cũng không chừng
 
Upvote 0
Upvote 0
mình có code sắp xếp đơn giản như sau:
Mã:
Sub SapXep()
    ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort.SortFields.Clear
    ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort.SortFields.Add Key:=Range("Q3:Q" & r), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.[COLOR=#0000cd][B]Worksheets(1)[/B][/COLOR].Sort
        .SetRange Range("P2:Q" & r)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
File của mình chỉ có 1 sheet, nhưng tại sao khi mình thay Worksheets(1) thành sheet1 thì lại bị lỗi

thay Worksheets(1) thành sheet1 tức là thành ActiveWorkbook.Sheet1.Sort.SortFields.Clear phải không?

Bị lỗi là phải rồi. Sheet1 là code name của sheet. Vì là name cho nên nó không phải là một thuộc tính của Workbook. Bạn không thể dùng workbook để gọi nó.
Muốn dùng code name thì phải dùng thẳng Sheet1, bỏ ActiveWorkbook đi.
Muốn xác định workbook thì bắt buộc phải dùng thuộc tính của workbook là nhóm WorkSheets hoặc nhóm Sheets. Vì Worksheets và Sheets đều là nhóm cho nên bắt buộc phải dùng chỉ số hoặc dùng tên để chỉ định đúng sheet (cũng có thể dùng for each là cách duyệt nhóm)

Chú: nếu bạn bỏ ActiveWorkbook đi mà vẫn bị lỗi thì do workbook của bạn bị xoá mất Sheet1 rồi (xem bài #2 của ndu ở trên).
 
Upvote 0
Tôi viết đơn giản thế này thôi:
Mã:
Sub sapxep()
  Sheet1.Range("A1:B9").Sort Sheet1.Range("A1"), xlAscending, Header:=xlNo
End Sub
---------------------------------
Code sai record macro rồi chạy record đó là được lúc đó tự hiểu code hiện tại sai
Excel 2007 trở lên mà record mấy vụ sort này nó cho ra cả đống, mệt lắm
 
Upvote 0
Web KT

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

Back
Top Bottom