Nhờ sửa giúp code tự thay đổi chiều cao dòng khi copy (1 người xem)

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

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

xucxich

Thành viên mới
Tham gia
19/5/13
Bài viết
45
Được thích
5
Mã:
Sub copy()
Dim i
Application.ScreenUpdating = False
Worksheets("Sheet2").Range("A3:M5").copy
For i = 5 To 65536
    If Range("A" & i).Value = "" Then
        Range("A" & i).Select
        Range("A" & i).RowHeight = 12.75
        ActiveWorkbook.ActiveSheet.Paste
        Application.ScreenUpdating = True
        Exit Sub
    End If
Next i
End Sub

Đoạn code trên nó tự động điều chỉnh chiều cao dòng mỗi khi copy.
nhưng copy 1 dòng thì được, còn copy 3 dòng thì nó chỉ điều chỉnh chiều cao dòng đầu, còn 2 dòng dưới ko điều chỉnh.
các anh biết chỉnh giúp code cho nó tự nhận biết nếu copy 1 dòng thì điều chỉnh chiều cao 1 dòng, còn nếu copy 3 dòng thì điều chỉnh chiều cao 3 dòng.
file đính kèm là ví dụ.
 

File đính kèm

Mã:
Sub copy()
Dim i
Application.ScreenUpdating = False
Worksheets("Sheet2").Range("A3:M5").copy
For i = 5 To 65536
    If Range("A" & i).Value = "" Then
        Range("A" & i).Select
        Range("A" & i).RowHeight = 12.75
        ActiveWorkbook.ActiveSheet.Paste
        Application.ScreenUpdating = True
        Exit Sub
    End If
Next i
End Sub

Đoạn code trên nó tự động điều chỉnh chiều cao dòng mỗi khi copy.
nhưng copy 1 dòng thì được, còn copy 3 dòng thì nó chỉ điều chỉnh chiều cao dòng đầu, còn 2 dòng dưới ko điều chỉnh.
các anh biết chỉnh giúp code cho nó tự nhận biết nếu copy 1 dòng thì điều chỉnh chiều cao 1 dòng, còn nếu copy 3 dòng thì điều chỉnh chiều cao 3 dòng.
file đính kèm là ví dụ.

thì sửa là như vậy thôi :
Mã:
Sub copy()
Dim i
Application.ScreenUpdating = False
Worksheets("Sheet2").Range("A3:M5").copy
For i = 5 To 65536
    If Range("A" & i).Value = "" Then
        Range("A" & i).Select
        Range("A" & i).[B][SIZE=2][COLOR=#ff0000]Resize(3[/COLOR][/SIZE][/B]).RowHeight = 20
        ActiveWorkbook.ActiveSheet.Paste
        Application.ScreenUpdating = True
        Exit Sub
    End If
Next i
End Sub
 
Upvote 0
Cũng trong câu hỏi copy và xóa, lần này em nhờ các thầy giúp em như trong 2 ví dụ ở file đính kèm.
 

File đính kèm

Upvote 0
Cũng trong câu hỏi copy và xóa, lần này em nhờ các thầy giúp em như trong 2 ví dụ ở file đính kèm.
Ví dụ 1: Thay vì bạn copy, paste bình thường thì bạn chọn phương án Insert Copied Cells
Ví dụ 2: Xóa 3 dòng trên thì dòng dưới ảnh hưởng gì đâu mà bạn nói resize lại chiều cao nhỉ?
 
Upvote 0
Ví dụ 1: Thay vì bạn copy, paste bình thường thì bạn chọn phương án Insert Copied Cells
Ví dụ 2: Xóa 3 dòng trên thì dòng dưới ảnh hưởng gì đâu mà bạn nói resize lại chiều cao nhỉ?

VD1: cách này em đã làm nhưng nhiều trường hợp nó sẽ thừa mấy dòng trống ở giữa bảng tính.
nên em muốn nó tự nhận biết:
- nếu số dòng copy là 3 dòng mà nơi cần paste chỉ chừa 1 dòng thì tự động chèn thêm 2 dòng nữa cho đủ 3 dòng rồi mới paste.
- nếu số dòng copy là 1 dòng mà nơi cần paste chừa 3 dòng thì tự động xóa 2 dòng thừa rồi mới paste.
VD2: nếu em xóa 3 dòng trên (dòng 5,6,7) thì dòng ở dưới (dòng 8) từ chiều cao ban đầu 36px sẽ bị đẩy lên trên vị trí dòng 5 và chiều cao dòng chỉ còn 17px. làm sao để chiều cao nó ko thay đổi mà vẫn là 36px.
 
Upvote 0
VD1: cách này em đã làm nhưng nhiều trường hợp nó sẽ thừa mấy dòng trống ở giữa bảng tính.
nên em muốn nó tự nhận biết:
- nếu số dòng copy là 3 dòng mà nơi cần paste chỉ chừa 1 dòng thì tự động chèn thêm 2 dòng nữa cho đủ 3 dòng rồi mới paste.
- nếu số dòng copy là 1 dòng mà nơi cần paste chừa 3 dòng thì tự động xóa 2 dòng thừa rồi mới paste.
VD2: nếu em xóa 3 dòng trên (dòng 5,6,7) thì dòng ở dưới (dòng 8) từ chiều cao ban đầu 36px sẽ bị đẩy lên trên vị trí dòng 5 và chiều cao dòng chỉ còn 17px. làm sao để chiều cao nó ko thay đổi mà vẫn là 36px.
Bạn tải file về xem sao nhé. Không phải xóa dòng là dòng dưới tự thay đổi chiều cao dòng đâu nhé
 

File đính kèm

Upvote 0
Bạn tải file về xem sao nhé. Không phải xóa dòng là dòng dưới tự thay đổi chiều cao dòng đâu nhé

code của anh đúng yêu cầu của VD2 là xóa 3 dòng trên thì dòng dưới nó ko thay đổi chiều cao. còn với VD1 thì nó cứ paste chồng lên các hàng khác (copy nhiều dòng thì nó không paste tiếp xuống dưới mà cứ đè lên mấy hàng cũ :) )
anh có thể chỉnh sửa trong code ở file đính kèm của e bên trên cho nó hoàn chỉnh đoạn code được ko? (code copy, code xóa dòng).
 
Upvote 0
code của anh đúng yêu cầu của VD2 là xóa 3 dòng trên thì dòng dưới nó ko thay đổi chiều cao. còn với VD1 thì nó cứ paste chồng lên các hàng khác (copy nhiều dòng thì nó không paste tiếp xuống dưới mà cứ đè lên mấy hàng cũ :) )
anh có thể chỉnh sửa trong code ở file đính kèm của e bên trên cho nó hoàn chỉnh đoạn code được ko? (code copy, code xóa dòng).
Mình nghĩ bạn tự sửa là được thôi mà
Bạn chạy code này xem sao nhé
[GPECODE=vb]Sub VD1()
For i = 5 To 65536
If Range("A" & i).Value = "" Then
Sheet1.Range("A" & i & ":A" & Sheet1.Range("A" & i).End(xlDown).Row - 1).EntireRow.Delete
Sheet2.Rows("3:5").Copy
Sheet1.Range("A" & i).Insert Shift:=xlDown
Exit For
End If
Next
End Sub[/GPECODE]
 
Upvote 0
vẫn ko ổn lắm, nhưng từ code của anh em sẽ mò thử xem sao :)
nếu vẫn ko ra em sẽ lên diễn đàn hỏi tiếp.
Cảm ơn anh đã giúp đỡ!
 
Upvote 0

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

Back
Top Bottom