Board logo

標題: [發問] 整列空白自動隱藏 [打印本頁]

作者: PJChen    時間: 2021-10-1 21:21     標題: 整列空白自動隱藏

大大好,

理貨單的統一規則:
1) 每個客戶理貨單格式相同,但G欄商品會有不同
2) 理貨單列數會依客戶下單,而有所變化
3) 理貨單的商品清單,都在B:M "品名" & "合計"之間,並預留一些空白列數
EX:
範例的38:43為空白列,就自動隱藏

請問如何讓B:M "品名" & "合計"之間,完全空白的列數,可以自動隱藏?
程式要可以自動偵測空白列
[attach]34106[/attach]
作者: samwang    時間: 2021-10-1 21:53

回復 1# PJChen

請測試看看,謝謝
Sub test()
Dim Arr, i%, j%, n%
Application.ScreenUpdating = False
Arr = Range("b1:m43")
For i = 3 To UBound(Arr)
    n = 0
    If Arr(i, 1) = "" Then
        For j = 1 To UBound(Arr, 2)
            If Arr(i, j) = "" Then n = n + 1
        Next
        If n = 12 Then Rows(i).EntireRow.Hidden = True
    End If
Next
Application.ScreenUpdating = True
End Sub
作者: PJChen    時間: 2021-10-2 07:44

回復 2# samwang
您好,
這裡能否改為“商品”跟“合計”之間,
不要用指定實際範圍?
Arr = Range("b1:m43")
這樣才能套用到各個客戶的理貨單當中。
作者: samwang    時間: 2021-10-2 08:03

回復 3# PJChen


這裡能否改為“商品”跟“合計”之間,
不要用指定實際範圍?
>> 不好意思,後學不了解您得意思,可否說明詳細或舉例,謝謝
作者: samwang    時間: 2021-10-2 09:10

回復 3# PJChen

這裡能否改為“商品”跟“合計”之間,
不要用指定實際範圍?
>> 商品是哪個欄位?合計是哪個欄位
假設B欄~M欄又怎麼不用指定範圍
Arr = Range("b1:m43")
這樣才能套用到各個客戶的理貨單當中。
>> 這段我的理解是可以改為Arr = Range("b1:m" & [b65536].End(3).Row - 2),對嗎?
作者: 准提部林    時間: 2021-10-2 09:17

用"品名"檢查是否空白, 品名中間的空白不算,
只抓最後一筆"品名"至"合計"之間的空白行~

Sub 隱藏空白行()
Dim R&, xR As Range, xE As Range, i&, j&, k%
Range("G:G").EntireRow.Hidden = False
R = [g65536].End(3).Row
For i = R To 1 Step -1
    Set xR = Cells(i, "g")
    If xR = "合計" Then k = 1: Set xE = xR(0)
    If k = 0 Then GoTo i01
    If xR(0) <> "" Then
       If xR = "合計" Then MsgBox "品名已填滿, 沒有空白行": Exit Sub
       If xR(0) = "品名" Then MsgBox "品名全部空白": Exit Sub
       Exit For
    End If
i01: Next i
Range(xR, xE).EntireRow.Hidden = True
End Sub
作者: PJChen    時間: 2021-10-2 21:19

回復 5# samwang
改成這樣,執行結果無誤
Arr = Range("b1:m" & [b65536].End(3).Row - 2)

回復 6# 准提部林
執行結果無誤

感謝二位,程式執行結果,都很理想!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)