Xin mã code ẩn hiện dòng theo yêu cầu

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Nguyễn Diêu Hiền

Thành viên mới
Tham gia
16/11/15
Bài viết
17
Được thích
0
Mình có file báo giá như đã đính kèm, mình muốn xin anh/chị/em mã code tự động hiển thị số dòng (Từ dòng STT trở đi) theo yêu cầu khi nhập vào ô M3 và ẩn những dòng còn lại của bảng
VD: Khi đánh vào ô M3 giá trị là 15 thì bảng tự động hiển thị 15 dòng từ dòng STT (dòng thứ 3), còn các dòng còn lại (từ dòng 18 đến 58 tự động ẩn)
Xin chân thành cảm ơn!
 

File đính kèm

  • Bao gia.xlsx
    23.3 KB · Đọc: 8
Mình có file báo giá như đã đính kèm, mình muốn xin anh/chị/em mã code tự động hiển thị số dòng (Từ dòng STT trở đi) theo yêu cầu khi nhập vào ô M3 và ẩn những dòng còn lại của bảng
VD: Khi đánh vào ô M3 giá trị là 15 thì bảng tự động hiển thị 15 dòng từ dòng STT (dòng thứ 3), còn các dòng còn lại (từ dòng 18 đến 58 tự động ẩn)
Xin chân thành cảm ơn!
Thả cái này vào worksheet báo giá
Mã:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$M$3" Then
        Rows("3:58").Hidden = False
        If Target.Value + 4 < 58 Then
            Rows(Target.Value + 4 & ":58").Hidden = True
        End If
    End If
End Sub
 
Upvote 0
Bỏ cái này vào bảng báo giá
Mã:
Tùy chọn rõ ràng

Private Sub Worksheet_Change(ByVal Target As Range)
    Nếu Target.Address = "$M$3" thì
        Hàng ("3:58").Ẩn = Sai
        Nếu Target.Value + 4 < 58 Thì
            Hàng(Target.Value + 4 & ":58").Ẩn = Đúng
        Kết thúc nếu
    Kết thúc nếu
Kết thúc Sub
[/MÃ SỐ]
[/QUOTE]
Dạ, em cảm ơn anh nhiều ạ!
 
Upvote 0
Bạn có thể dùng hàm dưới đây và không bao giờ cần viết mã thêm lần nữa, chỉ cần gõ hàm:


Khi gõ hàm này giá trị hiện thị là rỗng, nên bạn cần nhấn CTRL+` để hiển thị công thức.

Lưu mã vào một module mới trong dự án của bạn. Và lưu lại với dạng xlsm, xlsb, xls, xlam, xla.
JavaScript:
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long) As Long
#Else
Private Enum LongPtr: [_]:End Enum
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
#End If
Dim rgCheck As Range, lStartRow&, tRows&
Function HideRow(RangeCheck As Range, startRow&, Optional totalRows& = 100)
  Set rgCheck = RangeCheck(1, 1): lStartRow = startRow: tRows = totalRows
  HideRow = vbNullString
  SetTimer Application.hwnd, 0, 10, AddressOf ProcTimer_HideRow
End Function

Private Sub ProcTimer_HideRow(ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal idEvent As Long, ByVal dwTime As LongPtr)
  On Error Resume Next
  KillTimer hwnd, idEvent
  If rgCheck Is Nothing Then Exit Sub
  Dim v, sh: v = rgCheck.Value
  Set sh = rgCheck.Parent:
  If tRows = 0 Then tRows = sh.UsedRange.Rows.Count - lStartRow + 1
  If tRows < 0 Then tRows = sh.Rows.Count - lStartRow + 1
  sh.Range(lStartRow & ":" & CStr(lStartRow + tRows - 1)).EntireRow.Hidden = False
  If v = Empty Or Not IsNumeric(v) Then
  Else
    If v < tRows Then sh.Range(CStr(lStartRow + v) & ":" & CStr(lStartRow + tRows - 1)).EntireRow.Hidden = True
  End If
  Set rgCheck = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom