Xin code hiện dòng cách quãng đã merge cells khi có dữ liệu và ẩn khi trống dữ liệu (1 người xem)

Liên hệ QC

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

quoccuonghd

Thành viên hoạt động
Tham gia
12/6/10
Bài viết
116
Được thích
7
Giới tính
Nam
Nghề nghiệp
Kỹ sư XD
Tôi rất hay soạn thảo các biên bản trên excel nhưng lại hay gặp trường hợp các ô của các dòng đã merge cells và các dòng đã merge cells này lại không liền kề nhau hoặc không cùng trên một cột, trong các ô đã merge cells thì tôi có link các công thức đến một địa chỉ nào đó trên file. Bây giờ tôi muốn nhờ các anh chị và các bạn trên diễn đàn viết giúp hộ code hiện các dòng đã merge cells khi có dữ liệu và ẩn khi trống dữ liệu. Thực hiện giúp tôi trên file đính kèm. Trên file đính kèm tôi muốn nhờ các anh chị và các bạn trên diễn đàn viết giúp hộ code hiện các dòng E10, E12, E13 và B25. Xin cảm ơn.
 
Không rõ ý bạn cái vụ E10; E12... đã là dòng thì chỉ đơn giản là dòng số 10, 12... thôi. Mà đã ẩn dòng thì ẩn luôn cả dòng. Bạn view code sẽ thấy đoạn Sheet4.Range("B25").EntireRow.Hidden = True. Code này giúp ẩn dòng 25. Bạn hoàn toàn có thể làm tương tự với BẤT KỲ DÒNG NÀO bạn muốn.
 
Upvote 0
Không rõ ý bạn cái vụ E10; E12... đã là dòng thì chỉ đơn giản là dòng số 10, 12... thôi. Mà đã ẩn dòng thì ẩn luôn cả dòng. Bạn view code sẽ thấy đoạn Sheet4.Range("B25").EntireRow.Hidden = True. Code này giúp ẩn dòng 25. Bạn hoàn toàn có thể làm tương tự với BẤT KỲ DÒNG NÀO bạn muốn.
Nhưng code có sẵn trong file của mỉnh chỉ ẩn hiện được có mỗi dòng 25 không biết cách làm thế nào để ẩn thêm được dòng 10, 12, 13 chỉ trong một nút đó. Nút đó là mình coppy code trên GPE vào nhưng ko biết cách sửa code để làm sao ẩn hiện được những dòng theo điều kiện của mình. Hoặc làm thế nào để nó tự ẩn hiện các dòng mình cần mà không cần nhấn nút thì càng tốt.
 
Upvote 0
Nhờ các anh chị và các bạn trên diễn đàn giúp mình với.
 
Upvote 0
Nhưng code có sẵn trong file của mỉnh chỉ ẩn hiện được có mỗi dòng 25 không biết cách làm thế nào để ẩn thêm được dòng 10, 12, 13 chỉ trong một nút đó. Nút đó là mình coppy code trên GPE vào nhưng ko biết cách sửa code để làm sao ẩn hiện được những dòng theo điều kiện của mình. Hoặc làm thế nào để nó tự ẩn hiện các dòng mình cần mà không cần nhấn nút thì càng tốt.
Code trong File của bạn cao thâm quá nên không biết cách sửa.
Hay là bạn thay hết code đó bằng đoạn này nha
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Rng As Range, Cll As Range
Set Rng = Union([E10], [E12], [E13], [B25])
Rng.EntireRow.Hidden = False
For Each Cll In Rng
   If Cll.Value = "" Then
      Cll.EntireRow.Hidden = True
   End If
Next
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Code trong File của bạn cao thâm quá nên không biết cách sửa.
Hay là bạn thay hết code đó bằng đoạn này nha
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Rng As Range, Cll As Range
Set Rng = Union([E10], [E12], [E13], [B25])
Rng.EntireRow.Hidden = False
For Each Cll In Rng
   If Cll.Value = "" Then
      Cll.EntireRow.Hidden = True
   End If
Next
Application.ScreenUpdating = True
End Sub
Cảm ơn bạn, mình đã thay rồi sao không thấy nó tự động ẩn hiện thế hả bạn. Mình đính kèm lại file bạn ktra lại giúp mình chút.
 
Upvote 0
Cảm ơn bạn, mình đã thay rồi sao không thấy nó tự động ẩn hiện thế hả bạn. Mình đính kèm lại file bạn ktra lại giúp mình chút.
Tại ô E13 của bạn không có công thức link sang sheet kia thì lúc nào nó cũng không có dữ liệu thì sau nó hiện ra được. Bạn thử kiểm tra những ô còn lại xem, nếu như sheet bên kia bỏ trống những ô link sang thì bạn biết liền. Nói chung code chay đúng đó.
 
Upvote 0
Nhưng sao ô E10 và B25 mình link công thức sang D4 của sheet "THONG SO" khi mình xóa nội dung bên D4 của sheet "THONG SO" thì thấy E10 và B25 lại không tự ẩn dòng đi mà vẫn hiện dòng trống. bạn xem lại giúp mình với. File đính kèm
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem lại giúp mình nhé.
 
Upvote 0
Tại ô E13 của bạn không có công thức link sang sheet kia thì lúc nào nó cũng không có dữ liệu thì sau nó hiện ra được. Bạn thử kiểm tra những ô còn lại xem, nếu như sheet bên kia bỏ trống những ô link sang thì bạn biết liền. Nói chung code chay đúng đó.
Nhưng sao ô E10 và B25 mình link công thức sang D4 của sheet "THONG SO" khi mình xóa nội dung bên D4 của sheet "THONG SO" thì thấy E10 và B25 lại không tự ẩn dòng đi mà vẫn hiện dòng trống. bạn xem lại giúp mình với. File đính kèm ở dưới bạn xem giúp.
Ý của mình là những dòng đó có dữ liệu thì hiện không có dữ liệu thì ẩn.
 
Lần chỉnh sửa cuối:
Upvote 0
Nhưng sao ô E10 và B25 mình link công thức sang D4 của sheet "THONG SO" khi mình xóa nội dung bên D4 của sheet "THONG SO" thì thấy E10 và B25 lại không tự ẩn dòng đi mà vẫn hiện dòng trống. bạn xem lại giúp mình với. File đính kèm
Sự kiện Change sẽ có tác dụng khi bạn thay đổi bất kỳ ô nào trên sheet
Nếu đã vậy thì bạn nên sử dụng sự kiện khác chút, còn code này chưa vừa ý thì dùng sự kiện Sheet Activate. Bạn cố nghiên cứu đi, code không sai nhưng do bạn chưa hiểu cách sử dụng thôi
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Rng As Range, Cll As Range
Set Rng = Union([E10], [E12], [E13], [B25])
Rng.EntireRow.Hidden = False
For Each Cll In Rng
   If Cll.Value = "" Then
      Cll.EntireRow.Hidden = True
   End If
Next
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Sự kiện Change sẽ có tác dụng khi bạn thay đổi bất kỳ ô nào trên sheet
Nếu đã vậy thì bạn nên sử dụng sự kiện khác chút, còn code này chưa vừa ý thì dùng sự kiện Sheet Activate. Bạn cố nghiên cứu đi, code không sai nhưng do bạn chưa hiểu cách sử dụng thôi
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Rng As Range, Cll As Range
Set Rng = Union([E10], [E12], [E13], [B25])
Rng.EntireRow.Hidden = False
For Each Cll In Rng
   If Cll.Value = "" Then
      Cll.EntireRow.Hidden = True
   End If
Next
Application.ScreenUpdating = True
End Sub
Mình không hiểu về code nên muốn nhờ bạn làm hộ. Bạn đã hộ thì hộ cho mình nốt với. Mình chỉ biết copy code rồi pase vào sheet . Mình cũng mới mua cuốn sách lập trình VBA của Phan Tự Hướng đọc nhưng chẳng hiểu mấy gì. Có thể mình rốt quá. Bạn sửa trên file mình đính kèm rồi úp lại cho mình với.
 
Upvote 0
À mình kiểm tra lại rồi code chạy tốt bạn ah, có nghĩa là mình phải nháy chuột vào một ô nào đó trên sheet thì nó mới chạy. cảm ơn bạn nhiều nhiều. có
 
Upvote 0
Mình không hiểu về code nên muốn nhờ bạn làm hộ. Bạn đã hộ thì hộ cho mình nốt với. Mình chỉ biết copy code rồi pase vào sheet . Mình cũng mới mua cuốn sách lập trình VBA của Phan Tự Hướng đọc nhưng chẳng hiểu mấy gì. Có thể mình rốt quá. Bạn sửa trên file mình đính kèm rồi úp lại cho mình với.
....................................................
Mod có ghé qua thì xóa hộ bài
 
Upvote 0
Bạn còn online không giúp mình thêm chút việc nữa với. cũng vẫn đề tài ẩn hiện dòng này nhưng mình có một file khác muốn nhờ bạn hoạn thiện giúp hộ code với. Nghĩa là trong file của mình trước đây mình úp lên GPE và đã được các bạn tren GPE giúp hộ code rồi nhưng vẫn chưa hoàn thiện được theo ý mình muốn đó là khi số thứ tự ở ô V2 có sự thay đổi thì các dòng B34:B53 cũng ẩn hiện theo. Bạn giúp mình nhé. Thank's.
 

File đính kèm

Upvote 0
....................................................
Mod có ghé qua thì xóa hộ bài
Bạn còn online không giúp mình thêm chút việc nữa với. cũng vẫn đề tài ẩn hiện dòng này nhưng mình có một file khác muốn nhờ bạn hoạn thiện giúp hộ code với. Nghĩa là trong file của mình trước đây mình úp lên GPE và đã được các bạn tren GPE giúp hộ code rồi nhưng vẫn chưa hoàn thiện được theo ý mình muốn đó là khi số thứ tự ở ô V2 có sự thay đổi thì các dòng B34:B53 cũng ẩn hiện theo. Bạn giúp mình nhé. Thank's.
 

File đính kèm

Upvote 0
Bạn còn online không giúp mình thêm chút việc nữa với. cũng vẫn đề tài ẩn hiện dòng này nhưng mình có một file khác muốn nhờ bạn hoạn thiện giúp hộ code với. Nghĩa là trong file của mình trước đây mình úp lên GPE và đã được các bạn tren GPE giúp hộ code rồi nhưng vẫn chưa hoàn thiện được theo ý mình muốn đó là khi số thứ tự ở ô V2 có sự thay đổi thì các dòng B34:B53 cũng ẩn hiện theo. Bạn giúp mình nhé. Thank's.
Thay code này vào
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("V2")) Is Nothing Then
   Dim Cll As Range
   Application.ScreenUpdating = False
   [B34:B53].EntireRow.Hidden = False
   For Each Cll In [B34:B53]
      Cll.EntireRow.Hidden = (Cll.Value = "")
   Next
   Application.ScreenUpdating = True
End If
End Sub
 
Upvote 0
Thay code này vào
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("V2")) Is Nothing Then
   Dim Cll As Range
   Application.ScreenUpdating = False
   [B34:B53].EntireRow.Hidden = False
   For Each Cll In [B34:B53]
      Cll.EntireRow.Hidden = (Cll.Value = "")
   Next
   Application.ScreenUpdating = True
End If
End Sub
Cảm ơn bạn nhiều lắm đúng code mình cần rồi, chúc bạn có nhiều sức khoẻ, hạnh phúc và thành công. mà cũng chưa biết bạn giới tính nam hay Nu, nhiều tuổi hay ít tuổi để tiện sưng hô. Mình năm nay 34T.
 
Upvote 0
Thay code này vào
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("V2")) Is Nothing Then
   Dim Cll As Range
   Application.ScreenUpdating = False
   [B34:B53].EntireRow.Hidden = False
   For Each Cll In [B34:B53]
      Cll.EntireRow.Hidden = (Cll.Value = "")
   Next
   Application.ScreenUpdating = True
End If
End Sub
Bạn cho mình hỏi thêm là nếu mình muốn ẩn thêm dòng E13, E15 nữa thì code trên sửa thế nào. Nhân tiện mình hỏi luôn là mình muốn bảo vệ các ô có công thức còn các ô ko có công thức vẫn cho người khác sửa mà các dòng theo code trên vẫn tự ẩn hiện được thì có được ko.
 
Upvote 0
Bạn cho mình hỏi thêm là nếu mình muốn ẩn thêm dòng E13, E15 nữa thì code trên sửa thế nào. Nhân tiện mình hỏi luôn là mình muốn bảo vệ các ô có công thức còn các ô ko có công thức vẫn cho người khác sửa mà các dòng theo code trên vẫn tự ẩn hiện được thì có được ko.
Mượn luôn đoạn code của bài 17 và bổ sung cho bạn. Viết theo lý thuyết, chưa kiểm tra. Bạn tự kiểm tra nhé
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("V2")) Is Nothing Then
   Dim Cll As Range, Rng As Range
   Application.ScreenUpdating = False
   Set Rng = Union([B34:B53], [E13], [E15])
   Rng.EntireRow.Hidden = False
   For Each Cll In Rng
      Cll.EntireRow.Hidden = (Cll.Value = "")
   Next
   Application.ScreenUpdating = True
End If
End Sub
 
Upvote 0
Mượn luôn đoạn code của bài 17 và bổ sung cho bạn. Viết theo lý thuyết, chưa kiểm tra. Bạn tự kiểm tra nhé
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("V2")) Is Nothing Then
   Dim Cll As Range, Rng As Range
   Application.ScreenUpdating = False
   Set Rng = Union([B34:B53], [E13], [E15])
   Rng.EntireRow.Hidden = False
   For Each Cll In Rng
      Cll.EntireRow.Hidden = (Cll.Value = "")
   Next
   Application.ScreenUpdating = True
End If
End Sub
Thank's quanghai1969 Mình kiểm tra rồi kết quả là ok. nhưng mình cứ phải ấn lưu thì mới có sự thay đổi mà mình cũng chưa biết tại sao file của mình bây giờ các ô có công thức link sang sheet khác không tự thay đổi khi sheet khác đã sửa dữ liệu mà nó không chịu cập nhật theo cứ phải ấn save file thì nó mới cập nhật thay đổi hay do file nặng quá nên nó thế. Dung lượng file bây giờ đang là 4M.
 
Upvote 0
Thank's quanghai1969 Mình kiểm tra rồi kết quả là ok. nhưng mình cứ phải ấn lưu thì mới có sự thay đổi mà mình cũng chưa biết tại sao file của mình bây giờ các ô có công thức link sang sheet khác không tự thay đổi khi sheet khác đã sửa dữ liệu mà nó không chịu cập nhật theo cứ phải ấn save file thì nó mới cập nhật thay đổi hay do file nặng quá nên nó thế. Dung lượng file bây giờ đang là 4M.
Chắc chắn là file của bạn đang ở chế độ tính toán thủ công rồi, chắc là do bạn chạy code gì có liên quan đến chức năng này của Excel.
Bạn copy code này về chạy 1 lần để trả chức năng này về tự động
PHP:
Sub abc()
Application.Calculation = xlCalculationAutomatic
End Sub
 
Upvote 0
Mượn luôn đoạn code của bài 17 và bổ sung cho bạn. Viết theo lý thuyết, chưa kiểm tra. Bạn tự kiểm tra nhé
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("V2")) Is Nothing Then
   Dim Cll As Range, Rng As Range
   Application.ScreenUpdating = False
   Set Rng = Union([B34:B53], [E13], [E15])
   Rng.EntireRow.Hidden = False
   For Each Cll In Rng
      Cll.EntireRow.Hidden = (Cll.Value = "")
   Next
   Application.ScreenUpdating = True
End If
End Sub
Còn câu hỏi nữa ở #19 là mình muốn nhờ bạn và các bạn trên diễn đàn giúp code bảo vệ các ô có công thức còn các ô không có công thức thì vẫn cho sửa và code trên vẫn tự động ẩn hiện dòng được. Mình đã bảo vệ thử bằng Protect sheet nhưng khi nháy vào file excel thì nó cứ báo nỗi VBA.
 
Upvote 0
Chắc chắn là file của bạn đang ở chế độ tính toán thủ công rồi, chắc là do bạn chạy code gì có liên quan đến chức năng này của Excel.
Bạn copy code này về chạy 1 lần để trả chức năng này về tự động
PHP:
Sub abc()
Application.Calculation = xlCalculationAutomatic
End Sub
Cảm ơn bạn. code này hay thật đấy, mình chạy xong code thì các công thức link sang sheet khác đã tự động cập nhật theo rồi.
 
Upvote 0
Cảm ơn bạn. code này hay thật đấy, mình chạy xong code thì các công thức link sang sheet khác đã tự động cập nhật theo rồi.
Không phải code hay mà là bác sĩ bắt đúng bệnh thôi. Là bác sĩ hay chứ, cho thuốc là trị được. Mấy cái còn lại tự xử nha....
 
Upvote 0

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

Back
Top Bottom