0

シート 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、それで、追加する別のピースが必要だと思いますか?

シートに移動して、すべてのセルを手動で結合解除したくありません。

4

2 に答える 2

2

ラインを交換する

ThisWorkbook.Worksheets("Quote & Proposal").Cells.Copy

ThisWorkbook.Worksheets("Quote & Proposal").Cells. _
    SpecialCells(xlCellTypeVisible).Copy

そしてそれはうまくいくはずです。

于 2013-06-15T10:52:42.777 に答える
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たが、これは次に反復する必要がある行番号に影響するため、値をクリアする方が簡単です

Sub RowIsHiddenClearValue()
    For i = 1 To 10
        If Cells(i, 1).EntireRow.Hidden Then                        
            Cells(i, 1).EntireRow.Value = ""
        End If
    Next
End Sub

Petersの回答に基づく

移動先シートのカーソルが最初のセルにあることを確認してください。

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

部品を組み立てるためにさらに指針が必要な場合は、問題のある部品の詳細をお知らせください。

于 2013-06-15T09:42:05.950 に答える