Tạo nút ẩn cột, ẩn dòng,... trong Sheet như thế nào? (2 người xem)

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

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

vanle33

Thành viên gạo cội
Tham gia
30/10/08
Bài viết
5,943
Được thích
3,995
Giới tính
Nam
Mình có file đính kèm như sau
1) Mình muốn tạo các nút bấm trong Sheet đó. Tên các nút bấm đó là "Xóa dòng" "Xóa cột" " Ẩn dòng" "Ẩn cột" " Paste Values"
Chỉ cần chọn các cột, dòng và nhấn vào nút đó. thì sẽ thực hiện được lệnh tương ứng. Với trường hợp Paste Values thì chọn ô nguồn, nhấn Paste Values , chọn ô đích
2) Các nút bấm này có thể áp dụng cho các Sheet khác của cùng 1 Work book
3) Có thể áp dụng sang file khác
 

File đính kèm

Code Ok rồi bác ah
+) Bác cho em cái Code "Ẩn dòng hoặc cột"

Các code chỉ khác nhau có dòng này thôi If TypeOf rng Is Range Then rng.EntireRow.Delete
Xóa cột: If TypeOf rng Is Range Then rng.EntireColumn.Delete
Ẩn dòng: If TypeOf rng Is Range Then rng.EntireRow.Hidden = TRUE
Ẩn cột: If TypeOf rng Is Range Then rng.EntireColumn.Hidden = TRUE
+) Sang file khác chỉ cần copy cái hình đó sang a?
Copy code thôi, hình bạn tự vẽ, xong Click phải lên hình, Assign Macro và chỉ đến tên Sub bạn cần
+) Code này xóa dòng nhưng em muốn Undo cho các thao tác em vừa bấm "nút" có được không a?
Không có undo gì được cả đâu ---> Thành ra thao tác phải cẩn thận, cùng lắm thì đóng file không lưu
 
Lần chỉnh sửa cuối:
Upvote 0
Các code chỉ khác nhau có dòng này thôi If TypeOf rng Is Range Then rng.EntireRow.Delete
Xóa cột: If TypeOf rng Is Range Then rng.EntireColumn.Delete
Ẩn dòng: If TypeOf rng Is Range Then rng.EntireRow.Hidden = TRUE
Ẩn cột: If TypeOf rng Is Range Then rng.EntireColumn.Hidden = TRUE

Copy code thôi, hình bạn tự vẽ, xong Click phải lên hình, Assign Macro và chỉ đến tên Sub bạn cần

Không có undo gì được cả đâu ---> Thành ra thao tác phải cẩn thận, cùng lắm thì đóng file không lưu
+) Sửa chữ màu đỏ mà không phải sửa chữ sau chữ Sub ah bác?
+) Không Undo được cũng nguy hiểm bác nhỉ? Có cách nào làm cho có thể Undo không bác?
+) Em có làm nút Paste Value như thế này
Sub Macro1()
'
' Macro1 Macro
'


'
Selection.Copy
Range("L21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Bác sửa cho em để mình có thể chọn địa chỉ đích của Paste Values chứ không cố định tại L21???
Thanks bác
 
Upvote 0
Bác ndu xem cho em hai vấn đề ở hai dấu cộng ở bài trên với nhé!???
(dấu cộng thứ nhất em đã làm được rồi) hii
 
Upvote 0
Bác ndu xem cho em hai vấn đề ở hai dấu cộng ở bài trên với nhé!???
(dấu cộng thứ nhất em đã làm được rồi) hii
Làm cho bạn luôn cho rồi
PHP:
Sub PasteValues()
  Dim rng As Object
  On Error Resume Next
  Set rng = Selection
  If Application.CutCopyMode Then
    If TypeOf rng Is Range Then rng(1, 1).PasteSpecial 3
  End If
End Sub
Hic.. Hic...
 
Upvote 0
+) Không Undo được cũng nguy hiểm bác nhỉ? Có cách nào làm cho có thể Undo không bác?
Thanks bác
Mình nghĩ ( mới nghĩ thôi nhé) là làm được _nhưng chắc chắn sẽ rất "tèo". Đại khái như thế này
1) Muốn tránh không bị nguy hiểm, trong code xóa dòng cột cho xuất hiện bảng thông báo, thí dụ: "Bạn muốn xóa dòng....cột...vv, nếu đòng ý thì nhấn OK và đừng hối hận nhé", lúc đó bạn sẽ...suy nghĩ
2) Nếu sau khi suy nghĩ mà vẫn bị "nguy hiểm" vì xóa tầm bậy, muốn "Ân đù" thì trong code xóa ta tạo một biến chung lưu lại vùng dữ liệu ban đầu vào mảng (nếu vùng dữ liệu chỉ có value) hoặc chép vùng dữ liệu bỏ qua một sheet trống nào đó (tèo thật). Code của nút "Ân- đù" sẽ chép dữ liệu cũ vào vùng chứa lúc đầu. Hihi, ta "Ân- đù" được....một lần, thôi có còn hơn không
Mới suy nghĩ thế, nếu anh Ba Tê & bạn Quang Hải chủ nhật mà rảnh làm ơn thử xem có khả thi hay không
Híc
 
Upvote 0
Mình nghĩ ( mới nghĩ thôi nhé) là làm được _nhưng chắc chắn sẽ rất "tèo". Đại khái như thế này
1) Muốn tránh không bị nguy hiểm, trong code xóa dòng cột cho xuất hiện bảng thông báo, thí dụ: "Bạn muốn xóa dòng....cột...vv, nếu đòng ý thì nhấn OK và đừng hối hận nhé", lúc đó bạn sẽ...suy nghĩ
2) Nếu sau khi suy nghĩ mà vẫn bị "nguy hiểm" vì xóa tầm bậy, muốn "Ân đù" thì trong code xóa ta tạo một biến chung lưu lại vùng dữ liệu ban đầu vào mảng (nếu vùng dữ liệu chỉ có value) hoặc chép vùng dữ liệu bỏ qua một sheet trống nào đó (tèo thật). Code của nút "Ân- đù" sẽ chép dữ liệu cũ vào vùng chứa lúc đầu. Hihi, ta "Ân- đù" được....một lần, thôi có còn hơn không
Mới suy nghĩ thế, nếu anh Ba Tê & bạn Quang Hải chủ nhật mà rảnh làm ơn thử xem có khả thi hay không
Híc

bác concogia còn nợ em chưa trả lời bài viết này, code của bác hiện tại xuất hiện lỗi, em đợi vài ngày rồi mà không bác nào giúp, chắc chỉ có chính chủ giúp thôi http://www.giaiphapexcel.com/forum/showthread.php?66656-Chuyển-hàng-thành-cột&p=449844#post449844
 
Upvote 0
Mình nghĩ ( mới nghĩ thôi nhé) là làm được _nhưng chắc chắn sẽ rất "tèo". Đại khái như thế này
1) Muốn tránh không bị nguy hiểm, trong code xóa dòng cột cho xuất hiện bảng thông báo, thí dụ: "Bạn muốn xóa dòng....cột...vv, nếu đòng ý thì nhấn OK và đừng hối hận nhé", lúc đó bạn sẽ...suy nghĩ
2) Nếu sau khi suy nghĩ mà vẫn bị "nguy hiểm" vì xóa tầm bậy, muốn "Ân đù" thì trong code xóa ta tạo một biến chung lưu lại vùng dữ liệu ban đầu vào mảng (nếu vùng dữ liệu chỉ có value) hoặc chép vùng dữ liệu bỏ qua một sheet trống nào đó (tèo thật). Code của nút "Ân- đù" sẽ chép dữ liệu cũ vào vùng chứa lúc đầu. Hihi, ta "Ân- đù" được....một lần, thôi có còn hơn không
Mới suy nghĩ thế, nếu anh Ba Tê & bạn Quang Hải chủ nhật mà rảnh làm ơn thử xem có khả thi hay không
Híc

Ý tưởng của anh Cò quá hay nhưng em pó tay với vụ undo rồi.
Chỉ còn 1 cách duy nhất ( theo ý của em thôi nhé ) là viết 1 Sub để copy nguyên sheet ra 1 sheet mới trước khi thực hiện code xóa hay làm gì đó. Muốn undo thì dễ rồi hén.
 
Upvote 0
Upvote 0
Upvote 0
Thế bạn có cảm thấy là RẤT CỰC NHỌC không?
Vấn đề Undo thật ra các trang nước ngoài đã nói nhiều nhưng nói chung để làm điều này cũng rất nhiêu khê
Vậy nên, code mình viết, mình tự cẩn thận lấy ---> Tự làm tự chịu
Em muốn phát triển thêm Code tý bác nhé?
Em muốn các Code của các "nút" của em khi bấm thì hiện 1 hộp cảnh báo "Bạn không thể Undo lại dữ liệu đâu. Bạn có muốn tiếp tục không?"
Ví dụ như code trong bài #2 của bác đó
Và có thể thêm vào các Code khác đoạn code bác mới thêm không?
Cám ơn bác
 
Upvote 0

Mình vừa xem qua bài biết về cách Undo, cũng là 1 điều đáng để học hỏi. Nhưng nếu áp dụng code đó vào cái vụ xoá dòng thì có lẻ khó à nha. >>> Mình quyết định dùng phương án cũ, copy nguyên sheet đem cất trước. Muôn Undo thì copy hết Usedrange đem về. Hic. Mình thấy sáng kiến của mình cũng hơi "tối thui" đấy chứ.
 
Upvote 0
Mình vừa xem qua bài biết về cách Undo, cũng là 1 điều đáng để học hỏi. Nhưng nếu áp dụng code đó vào cái vụ xoá dòng thì có lẻ khó à nha. >>> Mình quyết định dùng phương án cũ, copy nguyên sheet đem cất trước. Muôn Undo thì copy hết Usedrange đem về. Hic. Mình thấy sáng kiến của mình cũng hơi "tối thui" đấy chứ.
Thì code undo nó cũng làm y chang vậy thôi, chẳng qua là gán vào OnUndo nên bạn có thể bấm Ctrl + Z để kích hoạt Sub được
---------------
Em muốn các Code của các "nút" của em khi bấm thì hiện 1 hộp cảnh báo "Bạn không thể Undo lại dữ liệu đâu. Bạn có muốn tiếp tục không?"
Ví dụ như code trong bài #2 của bác đó
Và có thể thêm vào các Code khác đoạn code bác mới thêm không?
Cám ơn bác
Thì bạn thêm MsgBox vào --> Nội dung của MsgBox là gì tùy bạn ---> Thí nghiệm đi
 
Lần chỉnh sửa cuối:
Upvote 0
Em muốn phát triển thêm Code tý bác nhé?
Em muốn các Code của các "nút" của em khi bấm thì hiện 1 hộp cảnh báo "Bạn không thể Undo lại dữ liệu đâu. Bạn có muốn tiếp tục không?"
Ví dụ như code trong bài #2 của bác đó
Và có thể thêm vào các Code khác đoạn code bác mới thêm không?
Cám ơn bác
Đại loại thế này nè
Mã:
Sub test()
Dim xacnhan
xacnhan = MsgBox("Chac khong do?", vbYesNo)
If xacnhan = vbNo Then End
MsgBox "Tiep tuc"
End Sub
 
Upvote 0
Đại loại thế này nè
Mã:
Sub test()
Dim xacnhan
xacnhan = MsgBox("Chac khong do?", vbYesNo)
If xacnhan = vbNo Then End
MsgBox "Tiep tuc"
End Sub
Em đã phát triển thêm code ở bài #2 của bác ndu bằng cách thêm 1 đoạn code báo " Bạn có chắc chắn xóa dòng này không? Bạn có muốn tiếp tục. Xác nhận thông tin"
từ Code trong bài xóa dữ liệu do dongducnhiem giới thiệu đó! hiii
 
Upvote 0
Ý tưởng của anh Cò quá hay nhưng em pó tay với vụ undo rồi.
Chỉ còn 1 cách duy nhất ( theo ý của em thôi nhé ) là viết 1 Sub để copy nguyên sheet ra 1 sheet mới trước khi thực hiện code xóa hay làm gì đó. Muốn undo thì dễ rồi hén.
Híc, một cách "Ân- đù", bi giờ tưng quá, làm đại khái thôi, muốn Ok thì chăm chút code một tý tẹo
Mượn file của Thầy Ndu
Hihi, ngộ
 

File đính kèm

Upvote 0
Híc, một cách "Ân- đù", bi giờ tưng quá, làm đại khái thôi, muốn Ok thì chăm chút code một tý tẹo
Mượn file của Thầy Ndu
Hihi, ngộ
Bác Cò già a
Em muốn sau khi em thêm được tất cả 5 "nút" thỏa mãn yêu cầu bài #1 thì có sử dụng được cái nút "totite" của bác để Undo không?
Hay phải làm ra 5 loại nút Undo cho 5 code của 5 "nút" đó vậy bác?
 
Upvote 0
Bác Cò già a
Em muốn sau khi em thêm được tất cả 5 "nút" thỏa mãn yêu cầu bài #1 thì có sử dụng được cái nút "totite" của bác để Undo không?
Hay phải làm ra 5 loại nút Undo cho 5 code của 5 "nút" đó vậy bác?
Mình nghĩ ( cũng lại là nghĩ) một nút chắc là được, nhưng phải sửa cái code trong 5 nút của bạn một tý tẹo, nếu rảnh rỗi thì gởi cái file có 5 cái nút í lên đây xem nó ra mần sao mới tính tiếp
Thân
 
Upvote 0
Mình nghĩ ( cũng lại là nghĩ) một nút chắc là được, nhưng phải sửa cái code trong 5 nút của bạn một tý tẹo, nếu rảnh rỗi thì gởi cái file có 5 cái nút í lên đây xem nó ra mần sao mới tính tiếp
Thân
Em có file đó liền đây a
 

File đính kèm

Upvote 0
Em có file đó liền đây a
Trong file dữ liệu của bạn có đủ thứ trên đời, công thức, định dạng.....vv nên phải chơi kiểu thằng Đậu rồi
Thật tình mà nói làm cái này không khả thi, những gì mà công cụ trong bảng tính làm Ok (hide,delete..)thì cứ thế mà phang, tạo nút dấu, dán, xóa rồi lại tạo nút "Ân" với chả "đù" chỉ tổ rách việc vì nó cực kỳ hạn chế & cực kỳ "tèo", thấy lo lo rồi lại tạo bảng hỏi tới hỏi lui là có muốn "Ân đù" hông nữa
Nếu chỉ để tham khảo thì được, trăm ngàn lần mong bạn .....đừng áp dụng
Híc
 

File đính kèm

Upvote 0
Trong file dữ liệu của bạn có đủ thứ trên đời, công thức, định dạng.....vv nên phải chơi kiểu thằng Đậu rồi
Thật tình mà nói làm cái này không khả thi, những gì mà công cụ trong bảng tính làm Ok (hide,delete..)thì cứ thế mà phang, tạo nút dấu, dán, xóa rồi lại tạo nút "Ân" với chả "đù" chỉ tổ rách việc vì nó cực kỳ hạn chế & cực kỳ "tèo", thấy lo lo rồi lại tạo bảng hỏi tới hỏi lui là có muốn "Ân đù" hông nữa
Nếu chỉ để tham khảo thì được, trăm ngàn lần mong bạn .....đừng áp dụng
Híc
Em có 1 việc cần phải ứng dụng các nút đó nên em mới lập topic này để tạo 5 cái nút đó. hiii
Có thể sau này em phát triển thêm vài nút nữa
Để em có thể copy dữ liệu sang 1 sheet khác của file khác đó mà
 
Upvote 0
Web KT

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

Back
Top Bottom