我有一些宏将Sheet 2从我现有的工作簿复制到新的工作簿。此代码可以正常工作,除了有新的工作簿中不应显示的隐藏行。
以下是我编写的代码,用于复制工作表并仅粘贴其值:
Dim Output As Workbook
Dim FileName As String
Set Output = Workbooks.Add
Application.DisplayAlerts = False
ThisWorkbook.Worksheets(sourceSheetName).Cells. _
SpecialCells(xlCellTypeVisible).Copy
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats
FileName = ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets("Quote Questions").Range("AK545").Value & ".xls"
Output.SaveAs FileName
那么代码去哪里只会显示未隐藏的单元而不是隐藏的单元?
修改 提交答案后,代码略有变化。这是更多信息。 正在复制的工作表中的某些单元格已合并,我在代码行中出现错误:
ThisWorkbook.Worksheets(sourceSheetName).Cells. _
SpecialCells(xlCellTypeVisible).Copy
说:Cannot change part of a merged cell
,所以我猜需要添加另一篇文章吗?
我不想转到工作表并手动取消合并所有单元格。
答案 0 :(得分:2)
替换
行ThisWorkbook.Worksheets("Quote & Proposal").Cells.Copy
与
ThisWorkbook.Worksheets("Quote & Proposal").Cells. _
SpecialCells(xlCellTypeVisible).Copy
它应该有用。
答案 1 :(得分:1)
您可以使用此代码检查行是否隐藏
Sub RowIsHidden()
For i = 1 To 7
MsgBox Cells(i, 1).EntireRow.Hidden
Next
End Sub
这与您上面的代码类似。您也可以使用工作表名称
代替工作表的索引Sub CopyOnlyValuesFromSheet()
' Copy all Cells from first Sheet (SheetIndex =1)
ThisWorkbook.Worksheets(1).Cells.Copy
' Select second Sheet (SheetIndex =2)
ThisWorkbook.Worksheets(2).Select
' Paste only values into Selection
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats
End Sub
我曾尝试使用Cells(i, 1).EntireRow.Delete Shift:=xlUp
,但由于这会导致你必须迭代哪个rownumber,因此更容易清除值
Sub RowIsHiddenClearValue()
For i = 1 To 10
If Cells(i, 1).EntireRow.Hidden Then
Cells(i, 1).EntireRow.Value = ""
End If
Next
End Sub
确保目标表中的光标位于第一个单元格中。
Sub AnotherAnswer()
Call CopyValuesOfVisibleRows("Quote & Proposal", "Quote Questions")
End Sub
Sub CopyValuesOfVisibleRows(sourceSheetName, destinationSheetName)
ThisWorkbook.Worksheets(sourceSheetName).Cells. _
SpecialCells(xlCellTypeVisible).Copy
ThisWorkbook.Worksheets(destinationSheetName).Paste
End Sub
如果您需要更多指示将各个部分组合在一起,请提供更多详细信息,说明您遇到问题的部分。