返回列表 上一主題 發帖

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

GBKEE兄,如按以上巨集,那執行後每列調整成15行高,非小弟需求
如按EXCEL自動調整的功能,如果該行欄位最多有7列,則按字體9其行高即為7 X 12=84,但列印會有一些字體被裁切,調整是以行高15為佳

故小弟是希望可按巨集將原EXCEL的預計行高12--->15

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

GBKEE兄,按以上巨集套用原我附件,仍無法達成小弟要求的

小弟上網找了一些相關的討論,以下可達成一部份的要求(就是不斷行,以每行26字計算,超過即直接無條件進位一列)
以下巨集是一次判定200列,請問如何巨集自動判斷資料行數,自行可以按有資料的列數去設定欄高呢???
但如果按附件中F欄位的話則此仍無法達成(因依編號斷行,有時一列可能10幾個字)
  1. Sub 行高()
  2. Dim i As Integer
  3. For i = 1 To 200
  4. If (Len(Cells(i, 12)) / 26) > 1 Then
  5. Y = Application.WorksheetFunction.RoundUp(Len(Cells(i, 12)) / 26, 0)
  6. Rows(i).RowHeight = 15 * Y
  7. End If
  8. Next
  9. End Sub
複製代碼

TOP

回復 11# p6703
  1. Sub ex()
  2. Dim A As Range, Ar()
  3. For Each A In Range("A1").CurrentRegion.Columns(1).Cells
  4.   If A.EntireRow.Hidden = False Then '找出非隱藏列
  5.     ReDim Preserve Ar(s)
  6.     Ar(s) = A.Resize(, 6).Value
  7.     s = s + 1
  8.   End If
  9. Next
  10. Sheet1.ShowAllData '顯示全部資料
  11. Range("A1").CurrentRegion.ClearContents '清除原資料
  12. [A1].Resize(s, 6) = Application.Transpose(Application.Transpose(Ar)) '寫入資料
  13. For Each A In Range([F2], Cells(Rows.Count, 6).End(xlUp))
  14. k = Len(A) - Len(Replace(A, Chr(10), "")) + 1 '計算有幾列文字
  15. A.RowHeight = 15 * k '設定列高
  16. Next
  17. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題