【发布时间】:2017-07-14 22:45:41
【问题描述】:
我有两张床单。在第一个上填写所需的信息,另一个基本上是 Sheet(1) 中信息所在的模板。
Sheet(2) 中充满了 =IF(Sheet(1)!A1=””;””;Sheet(1)!A1) 等公式。
所以在 Sheet(2) 上有很多带有“”的值,它们基本上是空白的。如果此行中没有文本,我想删除整行。
所以如果行看起来像:
A33(“”) B33(“”) C33(“”) D33(“”) E33(“”) F33(“”) G33(一些文本) H33(“”) I33(“”) – 它应该留下
A34(“”) B34(“”) C34(“”) D34(“”) E34(“”) F34(“”) G34(“”) H34(“”) I34(“”) – 应该被删除
同样在工作表 (2) 上,我已合并单元格,工作表 (1) 中相应单元格的文本不适合其中。我想将它们在 Sheet(2)!B31:D68(B31:D31 和 B32:D32 等)范围内的这些单元格包装起来。
这是我的代码,但例如合并单元格的 Wrap 不起作用。代码隐藏了我需要删除它们的行。代码还隐藏了带有我在 Sheet(2) 中的文本的行,这些行来自 Sheet(1)。
Sub AutofitRows()
Dim CL As Range
For Each CL In ActiveWorkbook.Sheets(2).Range("A30:I68")
If CL.WrapText Then CL.rows.AutoFit
Next
End Sub
Sub removecellswithemptycells()
ActiveWorkbook.Sheets(2).Select
Set rr = Range("A30:J66")
For Each cell In rr
cell.Select
If cell.HasFormula = True And cell.Value = "" And cell.EntireRow.Hidden = False Then rows(cell.Row).EntireRow.Hidden = True
Next cell
End Sub
Sub removecellswithemptycells_pos2()
ActiveWorkbook.Sheets(2).Select
Set rr = Range("A21:J22")
For Each cell In rr
cell.Select
If cell.HasFormula = True And cell.Value = "" And cell.EntireRow.Hidden = False Then rows(cell.Row).EntireRow.Hidden = True
Next cell
End Sub
Sub dothefiles()
Dim NewPath As String
Dim iFileName$, iRow&
NewPath = Application.ThisWorkbook.Path & "\" & "Order"
If Dir(NewPath, 63) = "" Then MkDir NewPath
ActiveWorkbook.Sheets(2).Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=NewPath & "\" & [Sheet(1)!C17] & "-" & [Sheet(1)!C6] & " " & "Order" & " " & [Sheet(1)!C10] & " " & Date & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=No, _
OpenAfterPublish:=False
iFileName = NewPath & "\" & [Sheet(1)!C17] & "-" & [Sheet(1)!C6] & " " & "Order" & " " & [Sheet(1)!C10] & " " & Date & ".xls"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlManual
ThisWorkbook.Sheets(2).Copy
With ActiveWorkbook.ActiveSheet
.Buttons.Delete '.Shapes("Button 1").Delete
.UsedRange.Value = .UsedRange.Value
For iRow = .Cells(.rows.Count, 2).End(xlUp).Row To 5 Step -1
If Application.CountA(.rows(iRow)) = 1 Then .rows(iRow).Delete
Next
.SaveAs iFileName, xlExcel8: .Parent.Close
End With
Application.Calculation = xlAutomatic
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Sub doitallplease()
Call AutofitRows
Call removecellswithemptycells
Call removecellswithemptycells_pos2
Call dothefiles
End Sub
【问题讨论】:
-
我认为
wrap标签放错了位置。除此之外,Autofit不适用于合并单元格,不幸的是,这是一个已知问题。 -
如果合并单元格的换行是不可能的,我可以“取消合并”它们,但我需要“自动调整”,然后检查我的范围并检查是否需要增加单元格高度。
-
无效的是
Autofit,而不是Wrap。无论如何是你面临的唯一问题吗?如果没有,请先尝试使用未合并的内容,然后在最后进行合并/包装。