Nguyễn Tuấn Anh.
Nguyễn Tuấn Anh.
Thảo luận 12 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 548 lượt xem

Sub AutoFilter_Table()'AutoFilters on Tables work the same wayDim lo As ListObject 'Excel Table

Sub AutoFilter_Table()

'AutoFilters on Tables work the same way.

 

Dim lo As ListObject 'Excel Table

 

  'Set the ListObject (Table) variable

  Set lo = Sheet1.ListObjects(1)

  

  'AutoFilter is member of Range object

  'The parent of the Range object is the List Object

  lo.Range.AutoFilter

  

End Sub

 

cho em hỏi tại sao khi chạy dòng lệnh này báo lỗi : subscript out of range

Thảo luận 12 câu trả lời
Lượt xem 548 lượt xem
Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 16:01 - Jan 14, 2021

Chào bạn bạn có thể đính kèm thêm file của bạn nữa không?

Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 08:01 - Jan 15, 2021

alo

Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 09:01 - Jan 15, 2021

Khi chạy lệnh với đối tượng là Table (ở lệnh Set Io = Sheet1.ListObjects(1) ) thì bạn không viết lệnh này ở dạng range thông thường được nữa => Lệnh lo.Range.AutoFilter sẽ bị lỗi.

Bạn nên dùng dưới dạng bảng thông thường trong excel, không phải dạng Table chuẩn (insert > table). 2 dạng này khác nhau nên cách lập trình vba cũng khác.

Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 13:01 - Jan 20, 2021

vâng em cám ơn

Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 13:01 - Jan 20, 2021
Set C1 = ActiveSheet.Rows(15).RowDifferences(Comparison:=ActiveSheet.Range("D15"))
C1.Select
 
 Sau khi thực hiện lệnh trên giờ em  muốn hiển thị  từng ô ngoại trừ ô không được select  bằng lệnh MsgBox 

For Each C1 In Rg_selec

    
    
   MsgBox C1.Value
    
Next C1.Next

  nhưng em chưa làm được. hỗ trợ giúp em với 
Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 15:01 - Jan 20, 2021

Mục đích của bạn là xác định các ô ngoại trừ ô đang được chọn?

Ví dụ: Vùng D1:D20 và trong vùng này bạn đang chọn ở ô D15

Bây giờ viết code để điền số 1 vào các ô từ D1:D20 ngoại trừ ô D15

thì có thể viết:

1. Xác định ô đang chọn:

Dim dong_chon as long
dong_chon = ActiveCell.Row

2. Vòng lặp điền giá trị vào vùng ô:

Dim i as long
For i = 1 to 20
If i <> dong_chon then
Range("D" & i).Value = 1
End If
Next i
Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 09:01 - Jan 21, 2021
Vâng em cám ơn !
Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 09:01 - Jan 21, 2021
Nhưng mục đích của em là : sau khi dùng câu lệnh  Set C1 = ActiveSheet.Rows(15).RowDifferences(Comparison:=ActiveSheet.Range("D15"))
C1.Select
  để các ô trong dòng 15  sẽ được chọn (bôi đen) ngoại trừ ô D15. Và giờ em muốn đọc các ô đã được chọn đó ra mà không cần phải dùng đoạn lệnh trên của Thầy.
Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 09:01 - Jan 21, 2021
For Each C1 In Rg_selec

    
    
   MsgBox C1.Value
    
Next C1.Next
em muốn dùng lệnh for each để đọc các ô đã được chọn (ví dụ đã có 10/11 ô đã được chọn. em muốn đọc số liệu trên 10 ô đó
Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 09:01 - Jan 21, 2021
em không biết dùng Biến nào trong câu lênh For each để đọc và hiển thị giá trị của ô
Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 09:01 - Jan 21, 2021

Chào bạn bạn xem lại OFFSET khi kết hợp trong foreach nhé.

Vỗ tay vỗ tay
Nguyễn Tuấn Anh. 15:02 - Feb 02, 2021

em nhờ thầy chút. em đang làm macro  từ excel chọn các file ảnh và  đưa các ảnh đó vào một file word theo các địa chỉ là các bookmark đã add sẵn. Thầy cho em xin đoạn mã ví dụ về cái này với ạ

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông