Xin trợ giúp về Range trong VBA (2 người xem)

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

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

duynam

Thành viên mới
Tham gia
1/10/06
Bài viết
7
Được thích
1
Chào các bạn,

Mình đang làm một macro xử lý thông tin cho bảng dữ liệu nhưng đang bị kẹt ở chỗ Range (tô màu xanh). Mình muốn chọn từ ô B12 tới B60 (file đính kèm) để mình có thể chọn CellTypeBlank và paste công thức vào đó. Mình tính find ô "Grand Total" và offset về ô B60 nhưng không biết cách nào để có thể chọn từ ô B12 tới B60.

Các bạn giúp mình chọn vùng dữ liệu theo cách mình định làm (dùng find). Các bạn có cách khác hay hơn mong giới thiệu để mình tham khảo thêm. Mình cũng mói tìm hiểu VBA gần đây
Cám ơn các bạn nhiều.

Range("C2:E2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = True
Range("B1").Select
Selection.End(xlDown).Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.UnMerge
Range("D60").Select
Selection.EntireColumn.Insert
Cells.Find(What:="- 900", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Select
Selection.Offset(0,1).Select
ActiveCell. FormulaR1C1 = "=LEFT(RC[-1],2)"
ActiveCell.Offset(0,1).Select
ActiveCell. FormulaR1C1 = "=RIGHT(RC[-2],3)"
ActiveCell.Offset(0,1).Select
Range(Selection,Selection.End(xlToLeft)).Select
Selection.Columns.AutoFit
ActiveCell.Offset(1,0).Select
ActiveCell.FormulaR1C1 = "=R[-1]C"
ActiveCell.Copy
ActiveCell.Offset(1,0).Activate
Dim r1,r2 myRange as Range
Set r1 = ActiveCell
Cells.Find(What:="Grand Total", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Set r2 = ActiveCell.Offset(-2,0).Select
Set myRange = range(r1, r2).select


* Lưu ý: Bảng dữ liệu này không cố định tại một địa chỉ nhất định. Vị trí dòng đầu tiêntổng số dòng của bảng dữ liệu có thể thay đổi (vị trí và số lượng các cột không đổi) tuỳ theo số lượng Cost Center mình chọn.
 

File đính kèm

Chào các bạn,

Mình đang làm một macro xử lý thông tin cho bảng dữ liệu nhưng đang bị kẹt ở chỗ Range (tô màu xanh). Mình muốn chọn từ ô B12 tới B60 (file đính kèm) để mình có thể chọn CellTypeBlank và paste công thức vào đó. Mình tính find ô "Grand Total" và offset về ô B60 nhưng không biết cách nào để có thể chọn từ ô B12 tới B60.

Các bạn giúp mình chọn vùng dữ liệu theo cách mình định làm (dùng find). Các bạn có cách khác hay hơn mong giới thiệu để mình tham khảo thêm. Mình cũng mói tìm hiểu VBA gần đây
Cám ơn các bạn nhiều.


* Lưu ý: Bảng dữ liệu này không cố định tại một địa chỉ nhất định. Vị trí dòng đầu tiêntổng số dòng của bảng dữ liệu có thể thay đổi (vị trí và số lượng các cột không đổi) tuỳ theo số lượng Cost Center mình chọn.

Nhìn code của bạn thấy... "ớn" quá
Thôi thì cứ mô tả công việc:
- Bạn cần làm những gì?
- Kết quả bạn mong muốn là thế nào?
Vậy là được rồi
(vì nhìn code như kiểu ở trên mà đoán thì.. chóng mặt lắm)
 
Upvote 0
Nhìn code của bạn thấy... "ớn" quá
Thôi thì cứ mô tả công việc:
- Bạn cần làm những gì?
- Kết quả bạn mong muốn là thế nào?
Vậy là được rồi
(vì nhìn code như kiểu ở trên mà đoán thì.. chóng mặt lắm)

File "abc 1" đính kèm là file chưa chạy code ở trên. Sau khi chạy đoạn Code font chữ màu đen ở trên tới dòng "ActiveCell.Copy ActiveCell.Offset(1,0).Activate" sẽ được như file "abc - copy" ở trên.

Mình đang muốn viết đoạn code chọn từ ô B12 tới ô B60 (ô 09-M Adjustment) với điều kiện là nếu bảng dữ liệu tăng thêm dòng (do chọn thêm Cost Center. Mình chỉ chọn 4 Cost Center làm mẫu trong file đính kèm thôi) thì đoạn code vẫn sẽ chọn được từ ô B12 tới ô có chữ 09-M Adjustment.

Đoạn code của mình ở trên đã xử lý được chỗ ô B12 (nếu có tăng thêm dòng) nhưng đang bị vướng chỗ chọn từ ổ B12 đến ô 09- M Adjustment.
 

File đính kèm

Upvote 0
Mình đang muốn viết đoạn code chọn từ ô B12 tới ô B60 (ô 09-M Adjustment) với điều kiện là nếu bảng dữ liệu tăng thêm dòng (do chọn thêm Cost Center. Mình chỉ chọn 4 Cost Center làm mẫu trong file đính kèm thôi) thì đoạn code vẫn sẽ chọn được từ ô B12 tới ô có chữ 09-M Adjustment.

vì bạn có thể code nên giới thiệu đoạn sau để lấy range (select chẳng hạn)

trong file abc -1 trên thì chính xác là B10:B60, thì dùng code sau

Mã:
Sub chon()
    Sheet1.Activate
    Range([B1].End(xlDown).Offset(1), [B65000].End(xlUp).Offset(-2)).Select
End Sub
 
Upvote 0
Tôi không hiểu bạn muốn làm cái gì, nhưng chỉ thấy phần code màu xanh của bạn sẽ có vấn đề
Set r2 = ActiveCell.Offset(-2,0).Select
Set myRange = range(r1, r2).select


Lệnh Set gán địa chỉ đối tượng (object) cho biến, nhưng phương thức Select không trả về một đối tượng cho nên chạy tới đây bạn sẽ bị Run-time eror '424': Object required
 
Upvote 0
vì bạn có thể code nên giới thiệu đoạn sau để lấy range (select chẳng hạn)

trong file abc -1 trên thì chính xác là B10:B60, thì dùng code sau

Mã:
Sub chon()
    Sheet1.Activate
    Range([B1].End(xlDown).Offset(1), [B65000].End(xlUp).Offset(-2)).Select
End Sub
Mình đang định đăng bài để hỏi vấn đề này thì có người hỏi và bạn đã giải đáp. Cám ơn bạn.
 
Upvote 0

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

Back
Top Bottom