2011-09-16 7 views
1

私が必要とするものをほとんど見つけ出しました。 「合計」という名前の行をコピーし、その行を新しいシートに貼り付けます。行「合計」には数式があり、値が必要です。正しく動作するようにマクロを調整するにはどうすればよいですか?検索文字列が実際に発見された場合、あなたはその後、代替アクションを取ることができるテストするために、範囲のオブジェクトの価値のある製造に使用され行をコピーするマクロ

Sub RowCopy2() 
Dim rngFind As Range 

With Worksheets("Hol. Stats").UsedRange 
Set rngFind = .Find("Totals", _ 
      LookIn:=xlValues, _ 
      LookAt:=xlWhole, _ 
      SearchOrder:=xlByRows, _ 
      SearchDirection:=xlNext, _ 
      MatchCase:=True) 
End With 
rngFind.EntireRow.Copy _ 
Destination:=Worksheets("Sheet2").Range("A1") 
End Sub 

答えて

4

使用

Sub RowCopy2() Dim rngFind As Range 
    With Worksheets("Hol. Stats").UsedRange 
    Set rngFind = .Find("Totals", _ 
     LookIn:=xlValues, _ 
     LookAt:=xlWhole, _ 
     SearchOrder:=xlByRows, _ 
     SearchDirection:=xlNext, _ 
     MatchCase:=True) 
    End With 

    rngFind.EntireRow.Copy 
    Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues 
End Sub 
+0

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

+0

@J。ミラー:あなたは答えを受け入れることができ、それはあなたの質問が答えられたことを伝えます。クリックすると答えの横に小さなチェックマークがあります。 – adamleerich

+0

私はチェックマークをクリックしました。もう一度あなたに感謝します。 –

1

:ここ

は、マクロのコードでありますユーザーに情報を提供するなど

宛先の値に送信元の値を設定してコピー&ペーストを回避することができます。

Sub RowCopy2() 
Dim rngFind As Range 
Set rngFind = Worksheets("Hol. Stats").UsedRange.Find("Totals", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True) 
If Not rngFind Is Nothing Then Worksheets("Sheet2").Rows(1).Value = rngFind.EntireRow.Value 
End Sub 
0

行の範囲名を使用して「合計」行を見つける方が早いです。 2行でそれを行うことができます...

Rows(Range("Totals").Row).Copy 
Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues 

これは、Visual Basicで範囲名を使用する理由です。範囲のその他の特性については、このテキストで説明していますExcel help video

+0

Ed#1なぜその「より速く」見つけられるのですか?範囲が存在し、両方がすぐに実行されるならば、両方とも2行です#2財務モデルで範囲名がエラーにつながるという学術的証拠があります。 arxiv.org/ftp/arxiv/papers/1009/1009.2765.pdf – brettdj

+0

VBA内で変数を定義する必要はありません/入力するのが速いことを意味しました。 –

+0

(長すぎます!)マクロを記録せずに、またはウェブ検索を実行することなく/ VBA内で定義される変数を必要としないことを覚えておいてください。 エラーにつながる範囲名に関して...問題の研究は式に関して... VBAはさらに進んでいます平均的なユーザーから削除され、「正常に動作しなくなった場合、誰も気づくことはなく、修正しても修正されません」という前提があります。したがって、スプレッドシートの場所を参照する方法を選択する必要があります。この方法は、ユーザーが行/列などを移動することによる悪影響を最小限に抑えます。 –

関連する問題