Hỏi về code insert row

Liên hệ QC

feelingyes

Thành viên tiêu biểu
Tham gia
24/9/07
Bài viết
459
Được thích
395
Nghề nghiệp
Economic
Em có đoạn code chèn thêm vào dòng cuối của một range
sub InsertRangeRow(rangeObject as Range)
Dim totalrows as integer, lastrow as integer
with rangeObject
Totalrows =.rows.count
Lastrow = .rows(totalrows).row
.rows(lastrow).insert
End with
End sub
'*********************
sub inserttest()
InsertRangeRow thisWorkbook.worksheets("sheet1").Range("test")
End sub

Em đang thắc mắc là đoạn code trên sao khi em vào trong Cửa sổ macro thì ko thấy tên của Macro InsertRangeRow (nếu ta xóa đoạn Sub InsertTest() ở dưới
-Em đọc trong sách có viết đoạn code trên có truyền vào Range"test".--Và liệu ta có thể gộp 02 đoạn code trên được ko?
1. Em muốn cải tiến lên một chút ví dụ Mặc định Range có 10 dòng và 5 cột
- Cứ khi nào ta ghi hết dữ liệu vào (dòng cuối cùng , cột 5) thì Range sẽ tự chèn thêm một dòng ở cuối, và copy formular ở trên xuỗng
Được như vậy em phải thêm code như thế nào?
-Ta có thể dùng target trong đoạn code này?

Cám ơn các Huynh chỉ giáo
 
Em có đoạn code chèn thêm vào dòng cuối của một range
Và liệu ta có thể gộp 02 đoạn code trên được ko?
Rất nên gộp nữa là đằng khác;
Chỉ nên tách ra khi một số dòng lệnh lặp lại nhiều lần
Ví dụ: ta có vài 3 sheets, ta phải lần lượt sort từng sheet
Thì dòng lệnh sort sẽ nên tách ra ở riêng, & macro này sẽ được truyền 1 tham số là vùng cần xếp, trường cần xếp
Còn macro gộp lại sẽ tương tự vầy:
PHP:
Option Explicit

Sub inserttest()
 Dim TotalRows As Integer, lastRow As Integer
 
 With ThisWorkbook.Sheets("Sheet2").Range("test")
   TotalRows = .Rows.Count
   lastRow = .Rows(TotalRows).Row
   
   .Rows(lastRow).Insert
 End With
End Sub
1. Em muốn cải tiến lên một chút ví dụ Mặc định Range có 10 dòng và 5 cột
- Cứ khi nào ta ghi hết dữ liệu vào (dòng cuối cùng , cột 5) thì Range sẽ tự chèn thêm một dòng ở cuối, và copy formular ở trên xuỗng Được như vậy em phải thêm code như thế nào?
Bạn hãy cho biết đó là những công thức gì?
 
Upvote 0
-Cám ơn anh SA_DQ
Qua sự gợi ý em cũng hiểu rồi, tạm thời em chỉ cần vậy thôi.

Chúc anh vui vẻ
 
Upvote 0
Tôi đang làm giống như Bạn nhưng bằng cách hơi dài dòng :
- trước khi nó nhập liệu vào Range("test"), nó sẽ kiểm tra số dòng trống trong 1 cột nào đó không chứa công thức ( hàm countblank ), nếu countblank < số n nào đó thì nó sẽ đến cuối range("test") insert và copy fomular ở trên xuống.
 
Upvote 0
Tôi đang làm giống như Bạn nhưng bằng cách hơi dài dòng :
- trước khi nó nhập liệu vào Range("test"), nó sẽ kiểm tra số dòng trống trong 1 cột nào đó không chứa công thức ( hàm countblank ), nếu countblank < số n nào đó thì nó sẽ đến cuối range("test") insert và copy fomular ở trên xuống.

Chủ đề này rất thiết thực đối với mình, mong bạn đưa đoạn code đó lên để cho anh em học tập ? Thanks !
 
Upvote 0
Các bác giúp em cái VBA này với!
Em tạo một cái macro chèn thêm dòng, sau đó em muốn chèn một cái vòng lặp vào cho nó với ý nghĩa là: khi tìm thấy một dòng trống phía cuối bảng tính thì sẽ chèn thêm một dòng, tuy nhiên vì mới tập viết nên không hiểu nó lỗi cái gì:
i = 6
Do While Rows("i:i") = Empty
Rows("i:i").Select
Selection.Insert Shift:=xlDown
Rows("i-1:i-2").Select
Selection.Copy
Rows("i:i").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A6").Select
Loop
Các bác giúp em với nhé!!!
 
Lần chỉnh sửa cuối:
Upvote 0
Em tạo một cái macro chèn thêm dòng, sau đó em muốn chèn một cái vòng lặp vào cho nó với ý nghĩa là: khi tìm thấy một dòng trống phía cuối bảng tính thì sẽ chèn thêm một dòng, tuy nhiên vì mới tập viết nên không hiểu nó lỗi cái gì:
PHP:
    i = 6
        Do While Rows("i:i") = Empty
               Rows("i:i").Select
               Selection.Insert Shift:=xlDown
               Rows("i-1:i-2").Select
               Selection.Copy
                Rows("i:i").Select
                ActiveSheet.Paste
                Application.CutCopyMode = False
                Range("A6").Select
        Loop
Các bác giúp em với nhé!!!
Nếu là mới bắt đầu tìm hiểu, bạn nên nhờ bộ thu macro giúp cho!
Sau đây mình thu giúp bạn các công đoạn sau:
Tại A6 chọn nguyên dòng này;
Thêm 2 dòng mới (tất nhiên dòng 7 trở đi có dữ liệu);
Chép nội dung 2 dòng kề trên đến 2 dòng trống vừa tạo thêm;

PHP:
Sub Macro2()
    Rows("6:7").Select
    Selection.Insert Shift:=xlDown
    Rows("4:5").Select
    Selection.Copy
    Range("A6").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub

Tuy nhiên khi đưa vô vòng lặp với biến i thì dòng lệnh này sẽ lỗi: Rows("i:i").Select
mà ít ra phải là: Rows(i & ":" & i+1 ).Select
Bạn nên nêu lại đề bài, vì chưa rõ lắm; Chẳng hạng: Bạn thêm 1 dòng, nhưng chép từ 2 dòng dữ liệu, vậy đè lên thì sao?
Thứ nữa
khi tìm thấy một dòng trống phía cuối bảng tính thì sẽ chèn thêm một dòng,
chuyện này là lãng phí công sức & BG không cho đâu:
Số dòng trang tính là hữu hạn; làm sao bạn thêm dòng khi đang cuối trang tính(?!)
Nếu thêm dòng tại dòng cuối chứa dữ liệu là việc không cần; vì nó đã có sẵn rồi; & bạn cũng không nên lãng phí thời gian ưu tư về việc thêm dòng ở dưới dòng cuối chứa dữ liệu!
 
Upvote 0
Cám ơn bác rất nhiều- em cũng tận dụng tính năng thu macro rồi mới vào viết thêm vòng lặp đó, tuy nhiên là lần đầu nên cũng hơi gà...Ý em là sau khi tìm thấy một dòng trống phía dưới bảng thì chèn thêm 1 dòng thôi (dòng này là do coppy từ dòng trên xuống, do có hàm nên mới phải làm như thế), em gửi bác luôn file này để bác xem hộ em nhé
Trong cái nút "add" đó, bây giờ có điều hạn chế là nó add ngay sau dòng 6, mà em lại muốn nó hiểu là add vào dòng tiếp theo cơ- bác xem file em sẽ hiểu.
 

File đính kèm

Upvote 0
Macro sẽ Copy dòng cuối dán vào dòng trống kề dưới
PHP:
Sub THEMDONG2()
                ' Chon O Du Lieu Cuoi Cua Cot 'A''
With Range("A" & [A65432].End(xlUp).Row)
   .EntireRow.Copy               ': Copy Dong Cuoi Nay'
   .Offset(1).EntireRow.Select   ': Chon Dong Trong Ben Duoi'
   ActiveSheet.Paste             ': Dan DuLieu'
   Application.CutCopyMode = False
End With
End Sub
 
Upvote 0
Em có đoạn code chèn thêm vào dòng cuối của một range
Em đang thắc mắc là đoạn code trên sao khi em vào trong Cửa sổ macro thì ko thấy tên của Macro InsertRangeRow (nếu ta xóa đoạn Sub InsertTest() ở dưới
-Em đọc trong sách có viết đoạn code trên có truyền vào Range"test".--Và liệu ta có thể gộp 02 đoạn code trên được ko?
1. Em muốn cải tiến lên một chút ví dụ Mặc định Range có 10 dòng và 5 cột
- Cứ khi nào ta ghi hết dữ liệu vào (dòng cuối cùng , cột 5) thì Range sẽ tự chèn thêm một dòng ở cuối, và copy formular ở trên xuỗng
Được như vậy em phải thêm code như thế nào?
-Ta có thể dùng target trong đoạn code này?

Cám ơn các Huynh chỉ giáo

1. Không nhìn thấy Sub InsertRangeRow : Cửa sổ này chỉ hiện những Sub tự chạy được (không cần thông qua 1 Sub khác), còn những Sub có tham số (chỉ chạy được thông qua 1 thủ tục khác) thì không hiện lên

2. Gộp Sub:
PHP:
Sub InsertTest1()
    On Error Resume Next
    Dim MyRange As Range
    Set MyRange = ThisWorkbook.Worksheets("sheet1").Range("test")
    With MyRange
        .Rows(.Row + .Rows.Count - 1).Insert
    End With
    Set MyRange = Nothing
End Sub
Thân
 
Upvote 0
1. Không nhìn thấy Sub InsertRangeRow : Cửa sổ này chỉ hiện những Sub tự chạy được (không cần thông qua 1 Sub khác), còn những Sub có tham số (chỉ chạy được thông qua 1 thủ tục khác) thì không hiện lên

2. Gộp Sub:
PHP:
Sub InsertTest1()
    On Error Resume Next
    Dim MyRange As Range
    Set MyRange = ThisWorkbook.Worksheets("sheet1").Range("test")
    With MyRange
        .Rows(.Row + .Rows.Count - 1).Insert
    End With
    Set MyRange = Nothing
End Sub
Thân

Như vậy, cho em hỏi Mr bắb. Nếu mà khi ta ClearContent trong bảng tính đó. Thì các dòng mặc định có trở về mặc định như ban đầu không. Nếu không thì cần thêm những code nào.
 
Upvote 0
(Tên chức năng đã nói nên điều đó) Bạn vào Menu Edit-->...thử là thấy liền. Nó chỉ xóa nội dung, còn các định dạng vẫn còn nguyên.
 
Upvote 0
Web KT

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

Back
Top Bottom