返回列表 上一主題 發帖

新手問題,如何篩選後自動將資料由第一欄刪除至最後一欄???

回復 1# p6703
請上傳檔案範例 說明

TOP

回復 3# p6703
一列固定列高15   錄製後可套入
  1. Option Explicit
  2. Sub Ex()   '此程式:請篩選資料後套上
  3.     Dim Rng As Range, Rng1 As Range, E As Range
  4.     With ActiveSheet     '作用中工作表
  5.         If .FilterMode = True Then                            '如果指定活頁簿處於有篩選模式則為 True
  6.         Set Rng = .UsedRange.SpecialCells(xlCellTypeVisible)  '設定篩選資料範圍
  7.         '****方式1  顯示所有資料
  8.         .AutoFilterMode = False                               '屬性為 False  取消工作表 [自動篩選]
  9.         '如果目前在工作表上顯示有 [自動篩選] 下拉箭號,則此屬性為 True
  10.         '****方式2  顯示所有資料
  11.         ' .ShowAllData          'ShowAllData 方法: 使目前篩選清單的所有列均可見。如果正在使用自動篩選,本方法將箭頭變更為 [全部]。
  12.         '如處於沒有篩選模式:  ShowAllData會有錯誤
  13.         For Each E In .UsedRange.Rows    '所有資料列
  14.             If Application.Intersect(E, Rng) Is Nothing Then   '比對資料列: 不在篩選資料範圍內
  15.                 If Rng1 Is Nothing Then         '未設定Rng1
  16.                     Set Rng1 = E                '第一次:設定Rng1
  17.                 Else
  18.                     Set Rng1 = Union(E, Rng1)   '第一次以後:設定範圍加上(Union)上次 Rng1
  19.                 End If
  20.             End If
  21.         Next
  22.         Rng1.Delete xlShiftUp                    '刪除不是篩選資料範圍內的Range 下方上移
  23.         End If
  24.     End With
  25. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2012-1-10 11:12 編輯

回復 5# p6703
看看你是需要哪個  列高調整
  1. Sub 列高調整()
  2.      ActiveSheet.Cells.EntireRow.AutoFit
  3. End Sub
複製代碼
  1. Option Explicit
  2. Sub 列高調整()
  3.     Dim Rng As Range, Ar(), I
  4.     With ActiveSheet
  5.         .Cells.EntireRow.AutoFit
  6.         Set Rng = .Range("A2:A" & [A2].End(xlDown).Row)
  7.         Ar = Rng
  8.         For I = 1 To Rng.Count
  9.             Ar(I, 1) = Rng(I).RowHeight
  10.         Next
  11.         Rng.RowHeight = Application.Max(Ar)
  12.     End With
  13. End Sub
複製代碼
  1. Option Explicit
  2. Sub Ex()   '此程式:請篩選資料後套上
  3.     Dim Rng As Range, Rng1 As Range, E As Range
  4.     With ActiveSheet     '作用中工作表
  5.         If .FilterMode = True Then                            '如果指定活頁簿處於有篩選模式則為 True
  6.         Set Rng = .UsedRange.SpecialCells(xlCellTypeVisible)  '設定篩選資料範圍
  7.         '****方式1  顯示所有資料
  8.         .AutoFilterMode = False                               '屬性為 False  取消工作表 [自動篩選]
  9.         '如果目前在工作表上顯示有 [自動篩選] 下拉箭號,則此屬性為 True
  10.         '****方式2  顯示所有資料
  11.         ' .ShowAllData          'ShowAllData 方法: 使目前篩選清單的所有列均可見。如果正在使用自動篩選,本方法將箭頭變更為 [全部]。
  12.         '如處於沒有篩選模式:  ShowAllData會有錯誤
  13.         For Each E In .UsedRange.Rows    '所有資料列
  14.             If Application.Intersect(E, Rng) Is Nothing Then   '比對資料列: 不在篩選資料範圍內
  15.                 If Rng1 Is Nothing Then         '未設定Rng1
  16.                     Set Rng1 = E                '第一次:設定Rng1
  17.                 Else
  18.                     Set Rng1 = Union(E, Rng1)   '第一次以後:設定範圍加上(Union)上次 Rng1
  19.                 End If
  20.             End If
  21.         Next
  22.         Rng1.Delete xlShiftUp                    '刪除不是篩選資料範圍內的Range 下方上移
  23.         End If
  24.     End With
  25.     列高調整         '
  26. End Sub
複製代碼

TOP

回復 7# p6703
且好像每個報表執行起來行高均不同     當然是不一樣   你沒說有要執行一個以上的報表啊
  1. Option Explicit     'Option Explicit 陳述式 在模組層次中強迫每個在模組�堛瘍僂くㄔ眸楨�確的宣告。
  2. Sub 列高調整()
  3.     Dim Rng As Range, Ar(), i As Integer
  4.     With ActiveSheet                 '作用中的工作表
  5.         .Cells.EntireRow.AutoFit     'ActiveSheet.Cells : ActiveSheet的儲存格
  6.         Set Rng = .Range("A2:A" & [A2].End(xlDown).Row)
  7.         'a2 到 a2.End(xlDown)(往下到最後的資料).Row(列號)
  8.         '可改為F欄     .Range("F2:F" & [F2].End(xlDown).Row)
  9.         Ar = Rng                     'Ar陣列元素=Rng的(內容)數量: Ar陣列元素=Range 是為二維陣列
  10.         For i = 1 To Rng.Count
  11.             Ar(i, 1) = Rng(i).RowHeight
  12.             ' Ar(i, 1)        : Ar(i, 第2維素) Ar陣列第2維素=1
  13.             'Rng(i).RowHeight : Rng的(i)的儲存格之RowHeight(列高)
  14.         Next
  15.         Rng.RowHeight = Application.Max(Ar) '取得Ar陣列元素中的最大值
  16.     End With
  17. End Sub
複製代碼

TOP

回復 9# p6703
請自行套入
  1. Sub Ex()
  2.     With Sheet1.Range("A1:A10").EntireRow   
  3.         .RowHeight = 15
  4.         .Font.Size = 9
  5.     End With
  6. End Sub
複製代碼

TOP

回復 11# p6703
  1. Option Explicit
  2. Sub Ex()
  3.     Dim ChrMax As Integer, R As Range, TheChr As String, A As Integer, Chrx As Integer
  4.     ChrMax = 0                                '歸零:  紀錄 "換列字元" 的最大數目
  5.     For Each R In Sheet1.Range("F1:F10")      '依序處裡範圍中的子物件 此處是: 儲存格
  6.         If InStr(R, Chr(10)) Then             '搜尋換列字元: Chr(10)
  7.             TheChr = R                        '儲存格字串指定到 TheChr
  8.             A = 0                             '歸零:  "換列字元"於 字串的位置
  9.             Chrx = 0                          '歸零:  搜尋到"換列字元" 的次數
  10.             Do
  11.                 A = InStr(Mid(TheChr, A + 1), Chr(10))   'A: "換列字元"於 字串的位置
  12.                 TheChr = Mid(TheChr, A + 1)              '重新指定字串 TheChr 從 A+1 到字串尾端
  13.                 Chrx = Chrx + 1                          '搜尋到 "換列字元"的次數 + 1
  14.             Loop Until A = 0                             '離開迴圈Do Loop 的條件:  搜尋不到"換列字元"
  15.             If Chrx > ChrMax Then ChrMax = Chrx          '紀錄 "換列字元" 的最大數目
  16.         End If
  17.     Next
  18.     With Sheet1.Range("F1:F10")
  19.         .RowHeight = IIf(ChrMax > 0, ChrMax, 1) * 12     '調整列高
  20.         .Font.Size = 9                                   '製訂字體尺寸
  21.     End With
  22. End Sub
複製代碼

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題