Cách tạo siêu ẩn một cột; một dòng bằng code? (1 người xem)

Liên hệ QC

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

ninhmoon

Thành viên tiêu biểu
Tham gia
3/3/14
Bài viết
525
Được thích
48
Dear All!
Em đọc sách VBA thì biết tới việc tạo siêu ẩn sheet thì dung đoạn code bên dưới


[GPECODE=vb]
worksheets("sheet1").visible = xlveryhidden
[/GPECODE]
mà nếu vào công cụ bình thường của excel thì cũng ko mở được bình thường mà phải vào trong code để sửa:

[GPECODE=vb]
worksheets("sheet1").visible = true
[/GPECODE]

Nhưng nếu em muốn ẩn một cột và một dòng mà nếu dung cách thông thường để mở thì không được mà pải vào sửa code. Thì em có viết dòng code bên dưới nhưng sao lại báo lỗi ah?
[GPECODE=vb]
Range("H:H").visible = xlveryhidden
[/GPECODE]


Và làm như thế nào để tạo siêu ẩn một cột hoặc một dòng mà ko thể mở được bằng một cách bình thường?
 
Dear All!
Em đọc sách VBA thì biết tới việc tạo siêu ẩn sheet thì dung đoạn code bên dưới


[GPECODE=vb]
worksheets("sheet1").visible = xlveryhidden
[/GPECODE]
Bạn bấm Alt+11 Bấm tiếp F4 dòng cuối cùng ở Visible là ẩn sheet theo code ở trên. Mở hay ẩn thì cũng vô đó làm thủ công cũng được đâu cần code.
 
Upvote 0
Câu hỏi ở đây là em muốn làm siêu ẩn bằng code cho một cột hoặc một dòng?
Mình mới nghĩ hướng thôi. Trong sub Worksheet_Change bạn khai báo biến static chứa số ô hiện (sử dụng specialcells(12)). Sau đó thêm code so sánh biến này với số ô không ẩn hiện tại, nếu số ô không ẩn tăng thêm (người dùng unhide dòng hoặc cột) thì dùng application.undo. Cập nhật lại biến static nếu số ô không ẩn hiện tại giảm.
 
Upvote 0
Hình như ý tưởng của bạn như file đính kèm, bạn thử giải ẩn Cột B và C theo cách thông thường .
Em để chuột ở cột D và kéo nhà bình thường ngoài E xcel thì cột C;B unhide ra luôn đâu có ẩn đâu. Đoạn code trên E ko run được là thế nào?


[GPECODE=vb]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("IV1") = AAA Then
With Range("Cam")
If Not Intersect(Target, .Cells) Is Nothing Then
ActiveCell.Offset(, 1).Select
End If
End With
End If
End Sub



[/GPECODE]
 
Upvote 0
Em để chuột ở cột D và kéo nhà bình thường ngoài E xcel thì cột C;B unhide ra luôn đâu có ẩn đâu. Đoạn code trên E ko run được là thế nào?

[/GPECODE][/QUOTE ]
bạn thay code này cho code cũ thì cột B và c luôn ẩn và nếu kéo ra thì cũng không sửa được dữ liệu .code sẽ tự đông chạy, mọi phương án bảo mật chỉ làm để chống sơ xuất và cho vui thôi .

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Columns("B:C").ColumnWidth = 0
If Range("IV1") = AAA Then
With Range("Cam")
If Not Intersect(Target, .Cells) Is Nothing Then
ActiveCell.Offset(, 1).Select
End If
End With
End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Em để chuột ở cột D và kéo nhà bình thường ngoài E xcel thì cột C;B unhide ra luôn đâu có ẩn đâu. Đoạn code trên E ko run được là thế nào?

[/GPECODE][/QUOTE ]
bạn thay code này cho code cũ thì cột B và c luôn ẩn và nếu kéo ra thì cũng không sửa được dữ liệu .code sẽ tự đông chạy, mọi phương án bảo mật chỉ làm để chống sơ xuất và cho vui thôi .

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Columns("B:C").ColumnWidth = 0
If Range("IV1") = AAA Then
With Range("Cam")
If Not Intersect(Target, .Cells) Is Nothing Then
ActiveCell.Offset(, 1).Select
End If
End With
End If
End Sub
Anh giải thích cho e một chút vì sao lại dùng :


[GPECODE=vb]
If Range("IV1") = AAA Then
With Range("Cam")
If Not Intersect(Target, .Cells) Is Nothing Then
ActiveCell.Offset(, 1).Select

[/GPECODE]
 
Upvote 0
Anh giải thích cho e một chút vì sao lại dùng :


[GPECODE=vb]
If Range("IV1") = AAA Then
With Range("Cam")
If Not Intersect(Target, .Cells) Is Nothing Then
ActiveCell.Offset(, 1).Select

[/GPECODE]
Bạn bấm Ctr+f3 sẽ thấy cột B và C có name "Cam" và điều kiện tại IV1 là "AAA" . Với tác dụng với sub Slectionchangge thì tại activecell sẽ tự động chọn lệch sang phải vùng "cam" 1 cột .Muốn chọn được cột B và C thì gõ "AAA" vào IV1.
 
Upvote 0
Dear All!

Nhưng nếu em muốn ẩn một cột và một dòng mà nếu dung cách thông thường để mở thì không được mà pải vào sửa code. Thì em có viết dòng code bên dưới nhưng sao lại báo lỗi ah?
[GPECODE=vb]
Range("H:H").visible = xlveryhidden
[/GPECODE]

Và làm như thế nào để tạo siêu ẩn một cột hoặc một dòng mà ko thể mở được bằng một cách bình thường?

Siêu ẩn chỉ dành cho sheet thôi. Nếu bạn muốn siêu ẩn cả hàng và cột thì chỉ có mỗi cách là vô hiệu hóa dòng lệnh hiện lại hàng cột khi bấm chuột phải thôi.
Khi đó thì dùng code này(mở VBE lên chọn vào sheet muốn vô hiệu hóa)

PHP:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    With Application
        .CommandBars("Row").FindControl(, 884).Visible = False
        .CommandBars("Worksheet Menu Bar").Controls(5) _ 
       .Controls(2).Controls(4).Visible = False
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom