Thêm một số dòng vào các cell được chọn

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

ngo15

Thành viên chính thức
Tham gia
24/6/06
Bài viết
75
Được thích
44
Trong cột A tôi chọn các vùng khác nhau, không liên tục. Tôi muốn dưới mỗi dòng đã chọn A(i) insert thêm 03 dòng. Tôi đã tìm nhiều bài về thêm dòng mà vẫn chưa áp dụng được. Rất mong các bạn giúp đỡ. Xin cám ơn
 
Bạn xài cái ni, & vui nha!

PHP:
Option Explicit
Sub Add3RowsSelections()
 Dim Rng As Range, Clls As Range
 
 Set Rng = Selection
 For Each Clls In Rng
    Clls.Offset(1).Resize(3, 1).EntireRow.Select
    Selection.Insert Shift:=xlDown
     
 Next Clls
End Sub
 
Upvote 0
To SA_DQ. Code của bạn nó đẩy dữ liệu xuống tận dòng 65536. Ví dụ tôi chọn A2:A4 và A7 sau khi chạy code thì dưới A2 thêm 03 dòng, dưới A3 thêm 03 dòng, dưới A4 thêm 03 dòng, dưới A7 thêm 03 dòng
 
Upvote 0
To SA_DQ. Code của bạn nó đẩy dữ liệu xuống tận dòng 65536. Ví dụ tôi chọn A2:A4 và A7 sau khi chạy code thì dưới A2 thêm 03 dòng, dưới A3 thêm 03 dòng, dưới A4 thêm 03 dòng, dưới A7 thêm 03 dòng
Mình đã thử rồi mới đưa lên mà bạn!
Bạn thử lại xem sao, theo các bước sau:
* Tô màu nền các ô định chọn; VD như trên: A2:A4, A7
* Sang C1:C8 bạn nhập các số 1, 2, 3, 4,. . . .
* Dùng kết hợp phím để chọn các ô có màu nền nói trên;
Bấm tổ hợp phím nóng cho chạy macro;

Bổ sung: Mình vẫn xài E03, nha
 
Upvote 0
Tôi đã làm như bạn chỉ dẫn:
1. Bôi đỏ ô A2:A4 và A7
2. Điền 1:9 vào C1:C9
3. Chọn A2:A4 và A7
4. Chạy Macro trên
Kết quả nhận được như file đính kèm
 

File đính kèm

Upvote 0
Mình đã thử rồi mới đưa lên mà bạn!
Bạn thử lại xem sao, theo các bước sau:
* Tô màu nền các ô định chọn; VD như trên: A2:A4, A7
* Sang C1:C8 bạn nhập các số 1, 2, 3, 4,. . . .
* Dùng kết hợp phím để chọn các ô có màu nền nói trên;
Bấm tổ hợp phím nóng cho chạy macro;

Bổ sung: Mình vẫn xài E03, nha

Bác SA ơi, vấn đề là nếu giữ phím ctrl và click chuột vào từng ô thì code chạy ngon, nhưng nếu kéo chuột chọn từ range A2:A4 (kéo chuột chọn nhiều range liền kề) thì code chạy liên tục đến khi nào hết insert dòng thì thôi (65536 dòng)! Thiệt không hiểu???
 
Upvote 0
Trong cột A tôi chọn các vùng khác nhau, không liên tục. Tôi muốn dưới mỗi dòng đã chọn A(i) insert thêm 03 dòng. Tôi đã tìm nhiều bài về thêm dòng mà vẫn chưa áp dụng được. Rất mong các bạn giúp đỡ. Xin cám ơn
Các bạn thử xài đoạn Code này xem sao; Tất nhiên phải dùng {CTRL} vì chọn các ô không liên tục mà!
Mã:
Option Explicit
Sub Add3RowsSelections()
 Dim Rng As Range, Clls As Range
 
 Set Rng = Application.InputBox("Hay Chon 1 So O:", Type:=8)
 If Rng Is Nothing Then Exit Sub
 For Each Clls In Rng
    Clls.Offset(1).Resize(3, 1).EntireRow.Select
    Selection.Insert Shift:=xlDown
 
 Next Clls
End Sub
 
Upvote 0
-Mình thấy đoạn code trên có khả năng tạo thành một vòng lặp gần như vô hạn. Khi vòng lặp duyệt qua vùng chọn 1, 3 dòng được chèn thêm. 3 dòng này lại trở thành vùng chọn 2, ta có 3 dòng nữa được chèn. 3 dòng này lại trở thành vùng chọn 3... và cứ thế chạy đến hết số dòng. Nhờ bác SA_DQ xem lại thử có đúng thế không?
-Trong khi chờ đợi, bạn xài thử đoạn code sau:
Mã:
Option Explicit
Sub Add3RowsSelections()
 Dim Rng As Range
 Dim iVung As Integer, iHang As Integer, iJ As Integer
 Set Rng = Selection
 iVung = Rng.Areas.Count
     For iJ = 1 To iVung
        iHang = Rng.Areas(iJ).Rows.Count
           Rng.Areas(iJ).Offset(iHang).Resize(3, 1).EntireRow.Select
        Selection.Insert Shift:=xlDown
     Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Và Một cách khác

PHP:
Sub Add3RowsSelections2()
 Dim Rng As Range, Clls As Range, iR As Long, nR As Long, aiR() As Long
 
 Set Rng = Selection
 ReDim aiR(Rng.Cells.Count - 1)
 
 iR = -1
 For Each Clls In Rng
    iR = iR + 1: aiR(iR) = Clls.Row
 Next Clls
 nR = iR
 
 For iR = 0 To nR
    Rows(aiR(iR) + 1 + iR * 3 & ":" & aiR(iR) + 3 + iR * 3).Insert Shift:=xlDown
 Next iR
End Sub
 
Upvote 0
Cám ơn bạn tigertiger, code của bạn đã chạy đúng như yêu cầu.
To Voda, khi tôi chọn A2:A4 và A7 thì code của bạn chỉ thêm dòng vào sau A4 và A7.
Một lần nữa xin cám ơn các bạn đã giúp đỡ

To tigertiger. Bạn làm ơn giải thích code của bạn với, tôi nghiên cứu mãi vẫn không hiểu:iR lúc =-1, lúc =0 và nhất là dòng insert sao mà dài thế. Tôi muốn hiểu để còn áp dụng khi cần. Xin cám ơn.

Các bạn cho hỏi thêm. Sau khi đã thêm được 03 dòng mới, tôi muốn tại cột B dòng thứ nhất (Trong 03 dòng vừa thêm) = ABC, dòng thứ 2 = DEF, dòng thứ 3 = HIK. Code viết tiếp sẽ như thế nào. Xin cám ơn
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
ĐÂY bạn ah

PHP:
Sub Add3RowsSelections2()
 Dim Rng As Range, Clls As Range, iR As Long, nR As Long, aiR() As Long
 
 Set Rng = Selection
 ReDim aiR(Rng.Cells.Count - 1)
 
 iR = -1
 For Each Clls In Rng
    iR = iR + 1: aiR(iR) = Clls.Row
 Next Clls
 nR = iR
 
 For iR = 0 To nR
    Rows(aiR(iR) + 1 + iR * 3 & ":" & aiR(iR) + 3 + iR * 3).Insert Shift:=xlDown
    Cells(aiR(iR) + 1 + iR * 3, 2) = "ABC"
    Cells(aiR(iR) + 2 + iR * 3, 2) = "DEF"
    Cells(aiR(iR) + 3 + iR * 3, 2) = "HIK"
 Next iR
 
End Sub

+iR
iR=-1 để khi vào vòng FOR thì nó bắt đầu +1 => iR=0 tương ứng phần tử mảng 0

còn ở dưới

ỉR=0 --> là biến vòng lặp FOR --> xét từ phần tử 0 của mảng aiR chưa giá trị hàm

+ ví dụ muốn insert dưới hàng 2 ba hàng thì chúng ta viết Row(3:5).Insert Shift:=xlDown
bạn có thể xem xét các giá trị trên để tìm ra tại sao thế
 
Upvote 0
Web KT

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

Back
Top Bottom