Quay lại sheet vừa mới copy

Liên hệ QC

AnhThu-1976

Thành viên tích cực
Tham gia
17/10/14
Bài viết
1,058
Được thích
170
Nhờ anh/chị viết code giúp em
Theo File của em thì tại sheet "Cuahang-A" em sẽ copy rồi sang sheet "Tonkho" để dán
Dán xong em muốn quay trở lại sheet "Cuahang-A", nhưng do tên sheet "Cuahang-A" không phải lúc nào cũng tên là sheet "Cuahang-A" mà nó sẽ là 1 tên bất kỳ nào khác, nên ta không thể
Mã:
Sheets("Cuahang-A").Select
Vậy làm sao quay về lại sheet ta vừa copy
code của em
Mã:
Sub Macro2()
Sheets("Cuahang-A").Select
    Range("F4:F17").Select
    Selection.Copy
    Sheets("Tonkho").Select
    Range("F4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Sheets("Cuahang-A").Select
End Sub
Em cảm ơn!
 

File đính kèm

  • Nhay-sheet.xlsm
    15.8 KB · Đọc: 4
PHP:
Sub run_copy()
copy_to_new_range Sheets("Cuahang-A").Range("F4:F17"), Sheets("Tonkho").Range("F4")
End Sub
'-------------'
Sub copy_to_new_range(byval rng_copy as range, byval scell_target as range)
Dim arr as variant
If rng_copy.count = 1 then
redim arr(1 to 1, 1 to 1)
arr(1,1) = rng_copy.value2
Else
arr = rng_copy.value2
End if
scell_target.resize(ubound(arr,1), ubound(arr,2)).value = arr
Erase arr
End Sub
 
Upvote 0
PHP:
Sub run_copy()
copy_to_new_range Sheets("Cuahang-A").Range("F4:F17"), Sheets("Tonkho").Range("F4")
End Sub
'-------------'
Sub copy_to_new_range(byval rng_copy as range, byval scell_target as range)
Dim arr as variant
If rng_copy.count = 1 then
redim arr(1 to 1, 1 to 1)
arr(1,1) = rng_copy.value2
Else
arr = rng_copy.value2
End if
scell_target.resize(ubound(arr,1), ubound(arr,2)).value = arr
Erase arr
End Sub
Không được bạn ạ
Ví dụ mình thay đổi sheet "Cuahang-A" thành "Cuahang-B" thì nó báo lỗi
subscript out of range
ở dòng copy_to_new_range Sheets("Cuahang-A").Range("F4:F17"), Sheets("Tonkho").Range("F4")
Vì tên sheet copy ban đầu là không cố định tên, lúc thì "Cuahang-A" hoặc "xyz" bất kỳ
 
Upvote 0
Theo File của em thì tại sheet "Cuahang-A" em sẽ copy rồi sang sheet "Tonkho" để dán
Dán xong em muốn quay trở lại sheet "Cuahang-A", nhưng do tên sheet "Cuahang-A" không phải lúc nào cũng tên là sheet "Cuahang-A"
Cái này hại não nhỉ, Copy từ sheet "Cuahang-A", rồi quay lại thì không phải tên sheet "Cuahang-A" nữa
Bài đã được tự động gộp:

À chắc mình hiểu ra vấn đề rồi, tức là quay lại sheet trước đó, bạn tham khảo bài này mới hôm qua hôm kia gì nè:
https://giaiphapexcel.com/diendan/t...et-thao-tác-ngay-trước-đó-trong-excel.150782/
Cần thì nhờ bạn @xuongrongdat bạn ấy hỗ trợ cho
 
Upvote 0
Thực ra rất giản là không chỉ định sheet copy thì code nhận activesheet theo nút lệnh đặt ở sheet đó.
Cái tội là do cứ đòi copy, với quay lại sheet copy.
 
Upvote 0
Cái này hại não nhỉ, Copy từ sheet "Cuahang-A", rồi quay lại thì không phải tên sheet "Cuahang-A" nữa
Không phải như vậy
Code trên là tôi chỉ ví dụ:
Tên ban đầu là xyz thì quay lại cũng là xyz (nghĩa là sheet để copy trước khi copy thì nó là một tên nào đó chưa hẳn là Cuahang-A)
 
Upvote 0
Thực ra rất giản là không chỉ định sheet copy thì code nhận activesheet theo nút lệnh đặt ở sheet đó.
Cái tội là do cứ đòi copy, với quay lại sheet copy.
Cảm ơn bạn, mình đã thay đổi
copy_to_new_range ActiveSheet.Range("F4:F17"), Sheets("Tonkho").Range("F4")
thì chạy tốt, nhưng có vấn đề là ở câu lệnh trên thì đoạn Range("F4:F17") có thể thay đổi như Range("H4:H100") ...
Do đó mình sửa câu lệnh trên là
copy_to_new_range ActiveSheet.Selection, Sheets("Tonkho").Range("F4")
Và trước khi chạy code thì mình đã bôi đen H4:H100
Nhưng nó báo lỗi "object doesn't support property or method"
Tóm lại đưa chữ Selection thay thế cho một khối range bất kỳ
Nhờ bạn hướng dẫn giùm! Cảm ơn các bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ anh/chị viết code giúp em
Theo File của em thì tại sheet "Cuahang-A" em sẽ copy rồi sang sheet "Tonkho" để dán
Dán xong em muốn quay trở lại sheet "Cuahang-A", nhưng do tên sheet "Cuahang-A" không phải lúc nào cũng tên là sheet "Cuahang-A" mà nó sẽ là 1 tên bất kỳ nào khác, nên ta không thể
Mã:
Sheets("Cuahang-A").Select
Vậy làm sao quay về lại sheet ta vừa copy
code của em
Mã:
Sub Macro2()
Sheets("Cuahang-A").Select
    Range("F4:F17").Select
    Selection.Copy
    Sheets("Tonkho").Select
    Range("F4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Sheets("Cuahang-A").Select
End Sub
Em cảm ơn!
Tôi thắc mắc tại sao bạn không viết vầy:
Mã:
Sub Macro2()
  Sheets("Cuahang-A").Range("F4:F17").Copy Sheets("Tonkho").Range("F4")
End Sub
Vẫn copy mà có cần nhảy qua nhảy lại làm gì chứ
 
Upvote 0
Tôi thắc mắc tại sao bạn không viết vầy:
Mã:
Sub Macro2()
  Sheets("Cuahang-A").Range("F4:F17").Copy Sheets("Tonkho").Range("F4")
End Sub
Vẫn copy mà có cần nhảy qua nhảy lại làm gì chứ
Dạ đúng rồi, vì em record macro nên em nghĩ theo hướng phức tạp
 
Upvote 0
Web KT

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

Back
Top Bottom