Nhờ giải thích hộ đoạn code xác lập vùng cuộn ScrollArea (2 người xem)

  • Thread starter Thread starter nhatthai
  • Ngày gửi Ngày gửi
Liên hệ QC

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

nhatthai

Thành viên thường trực
Tham gia
16/7/07
Bài viết
221
Được thích
132
Nghề nghiệp
Quản lý dạy nghề
Trong quá trình thảo luận về giới hạn dãy cuộncủa Worksheet, tôi đã sưu tầm được đoạn mã này để giới hạn vùng cuộn dãy những ô được sử dụng. Với macro này sẽ nó sẽ tự động xác lập vùng cuộn trong ScrollArea, nhưng khi tôi thực hiện thì chẳng thấy điều gì xảy ra cả. Tôi không hiểu về VBA lắm. Mong các bác giúp.+-+-+-+

Code :

Private Sub Worksheet_Activate()
Me.ScrollArea = Rage(Me.UsedRange, Me.UsedRange(2, 2).Address)
End Sub
 

File đính kèm

Bạn chỉnh lại như sau:
Mã:
Private Sub Worksheet_Activate()
    Me.ScrollArea = Range(Me.UsedRange, Me.UsedRange(2, 2)).Address
End Sub
 
Upvote 0
Mã:
 Bạn chỉnh lại như sau:
Có khi đó là cái hàm không chừng?! Rnge(. . .;. . . ) í mà;
Mình trhấy còn 1 project gì đó nữa có cài password; Phải chi coi được cái này thì có thể nói với nhau nhiều hơn!
 
Upvote 0
Nhân tiện xin hỏi bác Sa: 2 câu lệnh sau có tác dụng như nhau về vùng tác dụng của thanh cuộn và cả chuột:
Mã:
1  Me.ScrollArea = Range(Me.UsedRange, Me.UsedRange(2, 2)).Address
 
2  Me.ScrollArea = Me.UsedRange.Address

Vậy:
- Me.UsedRange(2, 2) có tác dụng gì trong câu lệnh 1?
- Cấu trúc Me.UsedRange(2, 2) là như thế nào và kết quả ra cái gì?
- Nói thêm: Muốn mở rộng 1 tí cho vùng ScrollArea bằng UsedRange cộng thêm qua phải 2 cột và xuống dưới 2 cột, em dùng thế này:
Mã:
rRw = Me.Range(UsedRange.Address).Rows.Count
cCl = Me.Range(UsedRange.Address).Columns.Count
Me.ScrollArea = Range(Me.UsedRange.Address).Resize(rRw + 2, cCl + 2).Address
thì có tác dụng như mong muốn.
Chỉ là không hiểu Me.UsedRange(2, 2)
 
Upvote 0
Nguyên văn bởi SA_DQ
Có khi đó là cái hàm không chừng?!
Bác cẩn thận quá! Viết như thế thì chắc nhầm với chữ range. Với lại khi chỉnh xong, code chạy được mà!
 
Upvote 0
-Muốn code chạy bạn phải kích hoạt sự kiện Worksheet_Activate bằng cách chọn sheet2 rồi chọn lại sheet1.
-Ở đoạn code trên, vùng scroll quá nhỏ nên scroll bị khóa. Bạn có thể chỉnh rộng hơn bằng cách thay đổi giá trị dòng và cột trong Me.UsedRange(2, 2)).Address
 
Upvote 0
Tôi chỉnh rồi mà chẳng ăn nhằm gì cả.
Ăn nhằm chứ
Đã gọi là sự kiện Worksheet_Active thì đương nhiên bạn phải.. Active nó cái đã... Bằng cách là.. nhảy qua sheet khác, xong nhảy trở về là nó "chịu đèn" ngay...
... he.. he...
Còn nữa:
Me ở đây chắc là TÔI... mà ta đang dùng sự kiện Worksheet_Active, tức Sheet ấy cũng là chính TÔI... vậy chắc cũng chả cần "giới thiệu" TÔI LÀ AI thì mọi người cũng biết ai là chủ nhà...
he... he...
PHP:
Private Sub Worksheet_Activate()
    ScrollArea = Range(UsedRange, UsedRange(2, 2)).Address
End Sub
Theo như tôi hiểu là thế... xin các cao thủ góp ý thêm
ANH TUẤN
 
Lần chỉnh sửa cuối:
Upvote 0
Voda đã viết:
-Ở đoạn code trên, vùng scroll quá nhỏ nên scroll bị khóa. Bạn có thể chỉnh rộng hơn bằng cách thay đổi giá trị dòng và cột trong Me.UsedRange(2, 2)).Address
vậy là tôi hiểu câu hỏi bài 4 rồi, cám ơn Voda.
Nhưng nếu dùng Me.UsedRange(2, 2) với tham số khác 2 và 2, tôi sẽ dùng biến đếm dòng, cột của Usedrange rồi resize, sẽ như ý muốn.
 
Upvote 0
để tôi thử xen sao cái đã

Tôi thêm cái này vào ThisWorkbook là OK. Cảm ơn các bác nhiều. Oh lala

PHP:
   Private Sub Workbook_Open()
      Sheets("Sheet2").Activate:            Range("a1").Activate
      Sheets("Sheet1").Activate:            Range("a1").Activate
  End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Em có một thắc mắc về dùng ScronArea là không thể dùng auto filter được. Khi lọc máy dữ liệu cuối thì thanh cuộn xuống bị đứng không dung được. Em gửi kèm file mong các xem hộ&&&%$R, khi chọn như số 4 trong ví dụ thì không cuộn xuống được.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom