Xin hỏi code giúp insert thêm hàng theo ý muốn?

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

anh17d4

Thành viên mới
Tham gia
27/9/06
Bài viết
37
Được thích
18
!$@!!Mình có một vấn đề muốn tham khảo ý kiến mọi người:
Muốn dùng marco insert thêm hàng tại một số hàng định trước.VD như: tại hàng số 3 insert thêm 5 hàng, đến hàng số 13 lại insert thêm 5 hàng; cứ cách 10 hàng (hàng 23,33,43...,93) thì sẽ insert lại insert thêm 5 hàng nữa. CÔng việc này làm thủ công sẽ rất mất thời gian, mong mọi người chỉ giúp 1 code để làm.!$@!!
 
!$@!!Mình có một vấn đề muốn tham khảo ý kiến mọi người:
Muốn dùng marco insert thêm hàng tại một số hàng định trước.VD như: tại hàng số 3 insert thêm 5 hàng, đến hàng số 13 lại insert thêm 5 hàng; cứ cách 10 hàng (hàng 23,33,43...,93) thì sẽ insert lại insert thêm 5 hàng nữa. CÔng việc này làm thủ công sẽ rất mất thời gian, mong mọi người chỉ giúp 1 code để làm.!$@!!

Bạn thử xem nhé : Từ 3->93 : Chèn dưới
PHP:
Sub OB()
    Application.ScreenUpdating = False
    Dim i As Long, iR As Byte
    For i = 94 To 4 Step -10
        For iR = 1 To 5
            Sheet1.Range("A" & i).EntireRow.Insert
        Next
    Next
    Application.ScreenUpdating = True
End Sub

Thân!
 
Upvote 0
Xin mạn phép BAB tẹo, nha & chúc vui

Để thấy Code làm ăn thế nào, chúng ta nên tô cách 10 ô màu nèn là vàng nhạt trước khi chạy macro
PHP:
Option Explicit

Sub Insert5Rows()
    Application.ScreenUpdating = False
    Dim i As Long, iR As Byte
    For i = 93 To 4 Step -10
        
      Sheet3.Range("A" & i).Resize(5, 1).EntireRow.Insert
        
    Next
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Tốt rồi, vạy là mỗi lần bổ sung không cần phải làm thủ công nữa, em chỉnh sửa lại code của 2 bác làm được rồi.
 
Upvote 0
Gửi các Huynh
Tiện trong chủ đề, em xin được hỏi kiểu dữ liệu biến "byte" được hiểu như thế nào trong VBA?
Khi nào ta đặt nó
[/color][/color]
Cám ơn các Huynh
Cái này tôi nghĩ chỉ là tối ưu hóa vùng nhớ! (hay gì gì đó)
Thử hỏi iR chỉ từ 1 đến 5Dim iR as Long thì phí quá
Byte là vừa đủ (thậm chí quá dư, vì Byte có giá trị từ 0 đến 255)
Đúng không nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
Liên quan đến vấn đề này ,tôi cũng cần sự giúp đỡ ,vui lòng mở file đính kèm
 

File đính kèm

Upvote 0
Giả sử ta sẽ chạy hết hơn 65 ngàn dòng thì Integer cũng đâu có đủ anh nhỉ?

Câu hỏi chính là câu trả lời bạn ạ.

Với những VD nhỏ thì việc khai báo biến dư thừa chẳng ảnh hưởng nhiều (Máy vi tính bây giờ vốn rất mạnh)
Tuy nhiên khi sử dụng nhiều biến, và với các lệnh VBA đồ sộ thì ta sẽ phải nâng niu từng Byte bộ nhớ.

Chúc bạn thành công.

Thân!
 
Upvote 0
Macro của bạn đây, mại zô!

Liên quan đến vấn đề này ,tôi cũng cần sự giúp đỡ ,vui lòng mở file đính kèm
Bạn phải chuột vô thanh SheetNames & chọn dòng cuối của menu tắt & chép macro này vô CS VBE vừa xuất hiện
Kiểm tra lần cuối & nhập vài số vô [D1] xem sao!

Chúc vui!

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 
 If Not Intersect(Target, [d1]) Is Nothing Then
   Dim lRow As Long, Zw As Long, SDg As Long
   Dim Cuoi, Rng As Range
   
   SDg = [a65432].End(xlUp).Row - 1
   If SDg = 0 Then Exit Sub
   With Sheets("DL")
      lRow = .[b65432].End(xlUp).Row
      Cuoi = .Range("A" & .[a65432].End(xlUp).Row).Value
      If Cuoi = Target Then
         Range("A2:A" & SDg).Copy Destination:=.Cells(lRow + 1, 2)
         Exit Sub
      Else
1         Set Rng = .Columns("A:A").Find(Target + 1, LookIn:=xlValues)
         If Rng Is Nothing Then
3            Exit Sub
         Else
5            Rng.Resize(SDg, 1).EntireRow.Insert
            Range("A2:A" & SDg + 1).Copy Destination:=Rng.Offset(-SDg, 1)
7         End If
      End If
'      For Zw = 2 To lRow'
'         If .Cells(Zw, 1) = Target + 1 Then'
'              .Cells(Zw, 1).Resize(SDg , 1).EntireRow.Insert'
'              Range("A2:A" & SDg).Copy Destination:=.Cells(Zw, 2)'
'              Exit For'
'         End If'
'      Next Zw'
   End With
 End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom