2012-04-24 11 views
1

私は机の上で頭を打って私の頭を叩いて答えを得ようとしましたが、ちょうど働きたくありません。私はこれまでこれを得ましたが、それ以上のように見えません...シートからシングルローにデータをコピーして、別のシートの最後の行に行を貼り付けてください

Sub CopyValues() 
    Dim i As Integer 

    'Internal NCMR 
    Dim wsInt As Worksheet 
    Dim wsNDA As Worksheet 

    'Copy Ranges 
    Dim c As Variant 

    'Paste Ranges 
    Dim p As Range 

    'Setting Sheet 
    Set wsInt = Sheets("Internal NCMR") 
    Set wsNDA = Sheets("NCMR Data") 
    Set p = Range("B54:U54") 

    With wsInt 
     c = Array(.Range("B11"), .Range("B14"), .Range("B17"), .Range("B20"), .Range("B23"), .Range("Q11") _ 
       , .Range("Q14"), .Range("Q17"), .Range("Q20"), .Range("R25"), .Range("V23"), .Range("V25") _ 
       , .Range("V27"), .Range("B32"), .Range("B36"), .Range("B40"), .Range("B44"), .Range("D49") _ 
       , .Range("L49"), .Range("V49")) 
    End With 

    For i = LBound(c) To UBound(c) 
     p(i + 1).Value = c(i).Value 
    Next 

    With wsNDA 
     Worksheets("Internal NCMR").Rows("54").Copy 
     Sheets("NCMR Data").Range("B" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues 
    End With 
End Sub 

トピックで説明されているこのスクリプトのポイントは3倍です。

  1. シートからフィールドを取り出し、行に貼り付けます。
  2. 行を削除して、同じブックの別のシートに貼り付けます。
  3. セルZ1の2番目のシートから、ちょうど挿入された行の先頭にコピーします。

私がまだ手に入らない3番目の部分は、誰かが私に助けてくれれば大いに感謝します。

+0

サブを実行するとどうなりますか? – Sam

+0

何らかの理由でワークシートで検証エラーが発生しましたが、なぜ実際にはわからなかったのですか。 –

答えて

1

これはあなたが試しているものですか?

Option Explicit 

Sub CopyValues() 
    Dim i As Integer 

    'Internal NCMR 
    Dim wsInt As Worksheet 
    Dim wsNDA As Worksheet 

    'Copy Ranges 
    Dim c As Variant 

    'Paste Ranges 
    Dim p As Range 

    'Setting Sheet 
    Set wsInt = Sheets("Internal NCMR") 
    Set wsNDA = Sheets("NCMR Data") 
    Set p = wsInt.Range("B54:U54") 

    With wsInt 
     c = Array(.Range("B11"), .Range("B14"), .Range("B17"), .Range("B20"), .Range("B23"), .Range("Q11") _ 
       , .Range("Q14"), .Range("Q17"), .Range("Q20"), .Range("R25"), .Range("V23"), .Range("V25") _ 
       , .Range("V27"), .Range("B32"), .Range("B36"), .Range("B40"), .Range("B44"), .Range("D49") _ 
       , .Range("L49"), .Range("V49")) 
    End With 

    For i = LBound(c) To UBound(c) 
     p(i + 1).Value = c(i).Value 
    Next 

    With wsNDA 
     Dim Lastrow As Long 

     Lastrow = .Range("B" & Rows.Count).End(xlUp).Row + 1 

     wsInt.Rows("54").Copy 

     With .Rows(Lastrow) 
      .PasteSpecial Paste:=xlPasteFormats 
      .PasteSpecial Paste:=xlPasteValues 
      .Interior.Pattern = xlNone 
     End With 

     With .Range("A" & Lastrow) 
      If Lastrow = 3 Then 
       .Value = 1 
      Else 
       .Value = Val(wsNDA.Range("A" & Lastrow - 1).Value) + 1 
      End If 

      .NumberFormat = "0#######" 
     End With 
    End With 
End Sub 
+0

まあ、はい、いいえ...それはA1:Yです。そして、残りの部分が投稿された列AにZが貼り付けられます。 –

+0

あなたはもっと精巧にできますか? –

+0

申し訳ありませんが、ちょうど、私はソフト入力の代わりに難しい入力を押しました。 –

関連する問題