Code tạo thêm dòng tại vị trí trỏ chuột

Liên hệ QC

thaibinh_excel

Thành viên hoạt động
Tham gia
18/10/07
Bài viết
127
Được thích
29
Nghề nghiệp
Bán Hàng
Chào các bác,

Mình có 1 code sau de tạo thêm dòng cho sheet (dùng Record ghi lại) như sau :

PHP:
   Sub Macro3()
      Rows("41:41").Select:                Selection.Copy
       Selection.Insert Shift:=xlDown
      Range("A41").Select
      ActiveSheet.Paste
      Application.CutCopyMode = False
      Range("A41").Select
End Sub

Nhưng code này chỉ tạo mặc định tại đúng row mà mình đã chọn, nếu có nhập nội dung gì thì nó cũng bê nguyên xi nội dung đó vào dòng mới. Nếu bay giờ mình muốn :
1. Tạo dòng mới tại bất kỳ nơi nào mình trỏ chuột vào
2. Công thức giữ nguyên
3. Số lượng dòng được tạo theo ý mình muốn ( nếu muốn tạo 1 dòng thì vào code sửa là 1, 5 dòng thì vào code sửa lại thành 5 dòng

Vậy mình phải làm thế nào a?

Các bác ra tay chỉ giúp nhé.

Cám ơn rất nhiều
TB
 
Lần chỉnh sửa cuối:
Đây là Code để thêm bao nhiêu dòng tùy bạn vô nơi nào đó tùy

PHP:
Sub AddRows()
  Dim Rng As Range:           Dim sTRc As String
  Dim SoDg As Byte
  
  sTRc = "BAN CAN THEM BAO NHIEU DONG:"
  SoDg = InputBox(sTRc, , "5")
  Set Rng = Application.InputBox("HAY CHON NOI CAN THEM DONG:", "BANG CHUOT", Type:=8)
  Rng.Cells(1, 1).Resize(SoDg).EntireRow.Insert

End Sub

Chỉ có điều (2) Công thức giữ nguyên mình chưa thể hiểu, nó là sao vậy?!
 
Upvote 0
PHP:
Sub AddRows()
  Dim Rng As Range:           Dim sTRc As String
  Dim SoDg As Byte
  
  sTRc = "BAN CAN THEM BAO NHIEU DONG:"
  SoDg = InputBox(sTRc, , "5")
  Set Rng = Application.InputBox("HAY CHON NOI CAN THEM DONG:", "BANG CHUOT", Type:=8)
  Rng.Cells(1, 1).Resize(SoDg).EntireRow.Insert

End Sub
Chỉ có điều (2) Công thức giữ nguyên mình chưa thể hiểu, nó là sao vậy?!
Cám ơn bác SA-DQ,

Nó là như thế này ạ. Trong 1 bảng tính mình đã lập sẵn các công thức ở các dòng để khi đánh dữ liệu thì nó sẽ nhảy ra số liệu mình cấn truy xuất, nhưng ví dụ như 1 bảng báo giá thì lúc người ta cần 03 mã hàng, lúc cần 5 mã hàng, k biết chính xác số dòng bao nhiêu để chừa ra, thông thương Bình sẽ dùng lệnh Ctrl-C -> Insert Copied Cells để tạo thêm dòng mới mà vẫn giữ được công thức và số liệu tổng cộng bên dưới. Nhưng công đoạn đó cũng mất thời gian nên muốn dùng Macro để nhấn nút cho nhanh a.

Nhờ bác chỉ giúp thêm chút xíu nhé,
Cám ơn bác,
TB
 
Upvote 0
Bạn dùng thử đoạn code sau. Nhớ chọn dòng tại cột A bằng chuột trước khi chạy code. Số dòng chèn vào sẽ tương ứng với số dòng được chọn.
Mã:
Sub AddRows()
   Dim i As Long
   Dim k As Byte
   Dim Rng As Range
   i = Selection.Row
   k = Selection.Rows.Count
      Application.ScreenUpdating = False
  Rows(i).Resize(k).Copy
  Cells(i, 1).Resize(k).EntireRow.Insert
  Application.CutCopyMode = False
  Selection.Offset(k).Resize(k, 256).Select
   For Each Rng In Selection
         If Rng.HasFormula = False Then Rng.ClearContents
   Next
     Application.ScreenUpdating = True
End Sub
 
Upvote 0
Chào các bác,

Mình có 1 code sau de tạo thêm dòng cho sheet (dùng Record ghi lại) như sau :

PHP:
   Sub Macro3()
      Rows("41:41").Select:                Selection.Copy
       Selection.Insert Shift:=xlDown
      Range("A41").Select
      ActiveSheet.Paste
      Application.CutCopyMode = False
      Range("A41").Select
End Sub

Nhưng code này chỉ tạo mặc định tại đúng row mà mình đã chọn, nếu có nhập nội dung gì thì nó cũng bê nguyên xi nội dung đó vào dòng mới. Nếu bay giờ mình muốn :
1. Tạo dòng mới tại bất kỳ nơi nào mình trỏ chuột vào
2. Công thức giữ nguyên
3. Số lượng dòng được tạo theo ý mình muốn ( nếu muốn tạo 1 dòng thì vào code sửa là 1, 5 dòng thì vào code sửa lại thành 5 dòng

Vậy mình phải làm thế nào a?

Các bác ra tay chỉ giúp nhé.

Cám ơn rất nhiều
TB
Gởi ví dụ lên được không
 
Upvote 0
Bạn dùng thử đoạn code sau. Nhớ chọn dòng tại cột A bằng chuột trước khi chạy code. Số dòng chèn vào sẽ tương ứng với số dòng được chọn.
Mã:
Sub AddRows()
   Dim i As Long
   Dim k As Byte
   Dim Rng As Range
   i = Selection.Row
   k = Selection.Rows.Count
      Application.ScreenUpdating = False
  Rows(i).Resize(k).Copy
  Cells(i, 1).Resize(k).EntireRow.Insert
  Application.CutCopyMode = False
  Selection.Offset(k).Resize(k, 256).Select
   For Each Rng In Selection
         If Rng.HasFormula = False Then Rng.ClearContents
   Next
     Application.ScreenUpdating = True
End Sub

Okie roi a. Cám ơn các bác rất nhiều.

Best Regards,
TB
 
Upvote 0
Web KT

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

Back
Top Bottom