2016-09-02 6 views
0

タイトルのように、選択した行全体をコピーして値だけをペーストして、後で結果を変更することができないVBAコードを記述する必要があります。VBAでExcelのアクティブ行をフリーズするにはどうすればよいですか?

最後に私が作業したファイルでActiveCellでこれを行うことができましたが、1つのセルを変更するだけでした。

Sub Freeze() 
    ActiveCell.Copy 
    ActiveCell.PasteSpecial Paste:=xlPasteValues 
End Sub 

しかし、この新しいファイルのために、私は、行全体をコピーしていると私は、個々のセルを選択する必要はありません:これは私が使用したコードです。これを新しいファイルで使用すると、最初のセルでのみ機能します。私はそれを行全体のために働かせることができますか?

ありがとうございました。

+2

を変更?あるいは 'ActiveCell.EntireRow.Value = ActiveCell.EntireRow.Value'のように? –

+0

それはまさに私が必要としていたものです。うわー、それはとてもシンプルですが、私はどこでもそれを見つけることができませんでした:D – Teodoraa

+0

あなたはようこそ;) –

答えて

0

簡単なコードの下に(可能ならば細胞の選択を回避しようとすると、アクティブセル)を使用します

Sub Test() 

Call Freeze(3, 7) 
Call Freeze(4, 8) 

End Sub 


Sub Freeze(rowsource As Long, rowdest As Long) 

Rows(rowsource).Copy 
Rows(rowdest).PasteSpecial Paste:=xlPasteValues 

End Sub 
+0

'Rows(3)'も同様に動作します。 – arcadeprecinct

+0

真実ですが、 'Rows(" 3:10 ")のように複数の行を使用したい場合、ロジックを理解することができます。コピー' –

+0

true、それを考えませんでした。ちょうどそれが数値を使用して実装する方が簡単だろうと思った。 – arcadeprecinct

0

ペースト:= xlPasteValues

あなたはペーストの値をコピーする必要はありませんが形式をコピーする場合を除きます。

これを試してください。シート名を関連するシート名に置き換えます。また、X、Yを関連する行番号に置き換えます。あなたが複数の行を使用している場合は、Range("X:X")Rows(X)と `ActiveCell.EntireRow.Copy`と` ActiveCell.EntireRow.PasteSpecial xlPasteValues`のような同様Range("Y:Y")

Thisworkbook.Sheets("Sheet1").Rows(X).Value = _ 
Thisworkbook.Sheets("Sheet2").Rows(Y).Value 
+0

私は実際にフォーマットを保持する必要があります。また、選択した行(毎日変わる)で作業する必要があるため、あらかじめ設定された行番号を使用することはできません。あなたのソリューションはいいですね、本当に必要なものはありません:) – Teodoraa

+1

'それは毎日変わるので、変数を使用します:) –

関連する問題